<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Isari</id>
	<title>MeryWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Isari"/>
	<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Isari"/>
	<updated>2026-07-13T15:17:37Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=TeX%E6%96%87%E6%9B%B8%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB&amp;diff=6937</id>
		<title>TeX文書のコンパイル</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=TeX%E6%96%87%E6%9B%B8%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB&amp;diff=6937"/>
		<updated>2023-07-16T03:11:36Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* isari 版 (2023/07) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 手石 版 ==&lt;br /&gt;
編集中のTeX文書を保存してコンパイルし、pdfで表示します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// タイプセット.js&lt;br /&gt;
// 2013/10/21&lt;br /&gt;
// platex と dvipdfmx はパスが通っている必要があります。&lt;br /&gt;
&lt;br /&gt;
// 拡張子のチェック&lt;br /&gt;
var sary = document.Name.split( &amp;quot;.&amp;quot; );&lt;br /&gt;
if ( ( sary.length &amp;lt;= 1 ) || ( sary.pop() != &amp;quot;tex&amp;quot; ) ){ Alert( &amp;quot;.texではありません。&amp;quot; ); Quit(); }&lt;br /&gt;
&lt;br /&gt;
document.Save();&lt;br /&gt;
var pathdoc = document.FullName;&lt;br /&gt;
var jobname = changeExt( document.Name, &amp;quot;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
// 最後にpdfファイルを開くタイミングを当該ファイルの有無で判断しているので、&lt;br /&gt;
// 古いpdfファイルは削除する。ついでにその他のファイルも……。&lt;br /&gt;
var SFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
var ary = new Array( &amp;quot;pdf&amp;quot;, &amp;quot;aux&amp;quot;, &amp;quot;dvi&amp;quot;, &amp;quot;log&amp;quot;, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
for ( var i in ary ){&lt;br /&gt;
    var file_delete = changeExt( pathdoc, ary[ i ] );&lt;br /&gt;
    if ( SFso.FileExists( file_delete ) ){ SFso.DeleteFile( file_delete ) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
menu.Add( &amp;quot;Ａ４縦置き&amp;quot;, 41, meMenuChecked );&lt;br /&gt;
menu.Add( &amp;quot;Ａ４横置き&amp;quot;, 42, 0 );&lt;br /&gt;
menu.Add( &amp;quot;区切り&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
menu.Add( &amp;quot;Ｂ５縦置き&amp;quot;, 51, 0 );&lt;br /&gt;
menu.Add( &amp;quot;Ｂ５横置き&amp;quot;, 52, 0 );&lt;br /&gt;
menu.Add( &amp;quot;区切り&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
menu.Add( &amp;quot;キャンセル&amp;quot;, 99, 0 );&lt;br /&gt;
//var r = menu.Track( mePosMouse )&lt;br /&gt;
var r = menu.Track( 0 );&lt;br /&gt;
var op_p = &amp;quot;&amp;quot;;&lt;br /&gt;
var op_l = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
switch ( r ){&lt;br /&gt;
case 41:&lt;br /&gt;
    break;&lt;br /&gt;
case 42:&lt;br /&gt;
    op_l = &amp;quot; -l&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 51:&lt;br /&gt;
    op_p = &amp;quot; -p b5&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 52:&lt;br /&gt;
    op_l = &amp;quot; -l&amp;quot;;&lt;br /&gt;
    op_p = &amp;quot; -p b5&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 99:&lt;br /&gt;
    Quit();&lt;br /&gt;
default:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var stdout_log = changeExt( pathdoc, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
var cmd_cd = &#039;cmd /c cd /d &amp;quot;&#039; + document.Path + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_p  = &#039;platex -jobname=&amp;quot;&#039; + jobname + &#039;&amp;quot; &amp;quot;&#039; + pathdoc + &#039;&amp;quot; &amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot; 2&amp;gt;&amp;amp;1&#039;;&lt;br /&gt;
var cmd_d  = &#039;dvipdfmx -v&#039; + op_l + op_p + &#039; &amp;quot;&#039; + changeExt( pathdoc, &amp;quot;&amp;quot; ) + &#039;&amp;quot; &amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot; 2&amp;gt;&amp;amp;1&#039;;&lt;br /&gt;
var cmd_echo1 = &#039;echo.&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo2 = &#039;echo.&amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo1line = &#039;echo ----------&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo2line = &#039;echo ----------&amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
var cmd_ary = [&lt;br /&gt;
    cmd_cd&lt;br /&gt;
    , cmd_echo1line&lt;br /&gt;
    , cmd_p&lt;br /&gt;
    , cmd_echo2, cmd_echo2, cmd_echo2line&lt;br /&gt;
    , cmd_d&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
var windowStyle = { HIDE: 0, NORMALFOCUS: 1 };&lt;br /&gt;
// 処理が終わるまで次へ進まないようブロック（第3引数を”true”）。&lt;br /&gt;
WshShell.Run( cmd_ary.join( &amp;quot; &amp;amp; &amp;quot; ), windowStyle.NORMALFOCUS, true );&lt;br /&gt;
&lt;br /&gt;
// pdfファイルを関連付けで開く。&lt;br /&gt;
var pathpdf = changeExt( pathdoc, &amp;quot;pdf&amp;quot; );&lt;br /&gt;
var trymax = 3;&lt;br /&gt;
for ( var  tryCount = 0; tryCount &amp;lt; trymax; tryCount++){&lt;br /&gt;
    if ( SFso.FileExists( pathpdf ) ){&lt;br /&gt;
        WshShell.Run( &#039;cmd /c &amp;quot;&#039; + pathpdf + &#039;&amp;quot;&#039;, windowStyle.NORMALFOCUS, false );&lt;br /&gt;
        break;&lt;br /&gt;
    }else{&lt;br /&gt;
        Sleep( 500 );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( tryCount &amp;gt;= trymax ){&lt;br /&gt;
    Alert( &amp;quot;pdfファイルが見つかりませんでした。&amp;quot; );&lt;br /&gt;
    openFile( stdout_log );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
SFso = null;&lt;br /&gt;
WshShell = null;&lt;br /&gt;
&lt;br /&gt;
function openFile( fullname ){&lt;br /&gt;
    var i = fileIndex( fullname );&lt;br /&gt;
    if ( i == -1 ){&lt;br /&gt;
        if ( fileExists( fullname ) ){&lt;br /&gt;
            Editor.NewFile();&lt;br /&gt;
            Editor.OpenFile( fullname );&lt;br /&gt;
        }else{&lt;br /&gt;
            Alert( &amp;quot;.TMPがみつかりません！&amp;quot; );&lt;br /&gt;
            return -1;&lt;br /&gt;
        }&lt;br /&gt;
    }else{&lt;br /&gt;
        Editor.Documents.Item( i ).Activate();&lt;br /&gt;
    }&lt;br /&gt;
    return i;&lt;br /&gt;
&lt;br /&gt;
    function fileIndex( fullname ){ &lt;br /&gt;
        for ( var i = Editor.Documents.Count-1; i&amp;gt;=0; i-- ){ &lt;br /&gt;
            if ( Editor.Documents.Item( i ).FullName == fullname ){ return i }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function fileExists( filename ){&lt;br /&gt;
    var objFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
    var result = objFso.FileExists( filename );&lt;br /&gt;
    objFso = null;&lt;br /&gt;
    return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function changeExt( filename, ext ){&lt;br /&gt;
    var s = filename.split( &amp;quot;\\&amp;quot; );&lt;br /&gt;
    var f = s.pop().split( &amp;quot;.&amp;quot; );&lt;br /&gt;
    if ( f.length &amp;gt;= 2 ){&lt;br /&gt;
        f.pop();&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }else{&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }&lt;br /&gt;
    s.push( f.join( &amp;quot;.&amp;quot; ) );&lt;br /&gt;
    return s.join( &amp;quot;\\&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== isari 版 (2023/07) ==&lt;br /&gt;
手石さんの版を元に、TeX処理系と受け入れる拡張子、PDF表示ソフトをカスタムできるようにしました。オプションの値を変更してお好みの設定にしてください。手石版で指定できた用紙サイズなどはTeX側のクラスオプションで行うものとします。&lt;br /&gt;
&lt;br /&gt;
=== 更新履歴 ===&lt;br /&gt;
* 2020/10/16&lt;br /&gt;
** 初版公開&lt;br /&gt;
* 2023/07/16&lt;br /&gt;
** escキーでキャンセルができていなかったのと、キャンセルされても補助ファイルを削除してしまっていたのを修正。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;TeXコンパイル改&amp;quot;&lt;br /&gt;
// 2020/10/16 - 2023/07/16&lt;br /&gt;
&lt;br /&gt;
// ------------ オプション ------------&lt;br /&gt;
// 受け入れる拡張子&lt;br /&gt;
var exts = [ &amp;quot;tex&amp;quot;, &amp;quot;bib&amp;quot;, &amp;quot;txt&amp;quot; ];&lt;br /&gt;
&lt;br /&gt;
// TeX処理系&lt;br /&gt;
// キーをポップアップメニューに表示したい文字列、値をシェルに渡す文字列として適宜追加・編集してください。各処理系にはパスが通っている必要があります。&lt;br /&gt;
var engines = { &amp;quot;pLaTeX&amp;quot;: &amp;quot;ptex2pdf -l -ot -kanji=utf8&amp;quot;, &amp;quot;upLaTeX&amp;quot;: &amp;quot;ptex2pdf -u -l -ot&amp;quot;, &amp;quot;LuaLaTeX&amp;quot;: &amp;quot;lualatex&amp;quot;, &amp;quot;XeLaTeX&amp;quot;: &amp;quot;xelatex&amp;quot; };&lt;br /&gt;
&lt;br /&gt;
// syncTeXオプション&lt;br /&gt;
var synctex = &amp;quot;-synctex=1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// シェルの表示オプション&lt;br /&gt;
// 1にするとシェルのウィンドウが立ち上がり出力を表示、0にすると非表示になります。他にも10までの整数が指定できます。詳細は[WSHのドキュメント](https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364421(v=msdn.10))を参照してください。&lt;br /&gt;
var windowStyle = 1;&lt;br /&gt;
&lt;br /&gt;
// PDFビューワー&lt;br /&gt;
// 実行ファイルの場所をフルパス、バックスラッシュ2つ区切りで指定してください。必ず外側をシングル、内側をダブルのクオーテーションで囲みます。nullにすると規定のプログラムで開きます。&lt;br /&gt;
var pdfViewer = &#039;&amp;quot;C:\\Program Files\\SumatraPDF\\SumatraPDF.exe&amp;quot;&#039;;&lt;br /&gt;
// ------------------------------------&lt;br /&gt;
&lt;br /&gt;
// 拡張子のチェック&lt;br /&gt;
var sary = document.Name.split( &amp;quot;.&amp;quot; );&lt;br /&gt;
if ( ( sary.length &amp;lt;= 1 ) || ( exts.indexOf( sary.pop() ) == -1 ) ){&lt;br /&gt;
    Alert( &amp;quot;TeX文書ではありません。&amp;quot; );&lt;br /&gt;
    Quit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var filename = document.Name;&lt;br /&gt;
var path = document.Path;&lt;br /&gt;
var filepath = document.FullName;&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
var keys = Object.keys( engines );&lt;br /&gt;
keys.forEach( function( key, index ) {&lt;br /&gt;
    menu.Add( key, index + 1 );&lt;br /&gt;
} );&lt;br /&gt;
menu.Add( &amp;quot;キャンセル&amp;quot;, 0 );&lt;br /&gt;
// マウスポインタの位置にポップアップを表示したければTrack( mePosMouse )に&lt;br /&gt;
var r = menu.Track( 0 );&lt;br /&gt;
var key = &amp;quot;&amp;quot;, engine = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if ( r !== 0 &amp;amp;&amp;amp; r &amp;lt;= keys.length ){&lt;br /&gt;
    key = keys[r - 1];&lt;br /&gt;
    engine = engines[key];&lt;br /&gt;
}else if ( r === 0 ){&lt;br /&gt;
    Quit();&lt;br /&gt;
}else{&lt;br /&gt;
    Alert( &amp;quot;指定が正しくありません。&amp;quot; );&lt;br /&gt;
    Quit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 手動で保存したければ次の行をコメントアウト&lt;br /&gt;
document.Save();&lt;br /&gt;
// 古いpdfファイルと補助ファイルの削除&lt;br /&gt;
var SFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
var ary = new Array( &amp;quot;pdf&amp;quot;, &amp;quot;aux&amp;quot;, &amp;quot;dvi&amp;quot;, &amp;quot;log&amp;quot;, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
for ( var i in ary ){&lt;br /&gt;
    var file_delete = changeExt( filepath, ary[ i ] );&lt;br /&gt;
    if ( SFso.FileExists( file_delete ) ){ SFso.DeleteFile( file_delete ) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var typeset = engine + &amp;quot; &amp;quot; + synctex + &amp;quot; &amp;quot; + filename;&lt;br /&gt;
&lt;br /&gt;
var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
WshShell.CurrentDirectory = path;&lt;br /&gt;
WshShell.Run( typeset, windowStyle, true );&lt;br /&gt;
&lt;br /&gt;
// pdfファイルを開く&lt;br /&gt;
var pdfpath = changeExt( filepath, &amp;quot;pdf&amp;quot; );&lt;br /&gt;
var openpdf = pdfViewer ? pdfViewer + &amp;quot; &amp;quot; + pdfpath : pdfpath;&lt;br /&gt;
var trymax = 3;&lt;br /&gt;
for ( var  tryCount = 0; tryCount &amp;lt; trymax; tryCount++){&lt;br /&gt;
    if ( SFso.FileExists( pdfpath ) ){&lt;br /&gt;
        WshShell.Run( openpdf );&lt;br /&gt;
        break;&lt;br /&gt;
    }else{&lt;br /&gt;
        Sleep( 500 );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( tryCount &amp;gt;= trymax ){&lt;br /&gt;
    Alert( &amp;quot;pdfファイルが見つかりませんでした。&amp;quot; );&lt;br /&gt;
    var log = changeExt( filepath, &amp;quot;log&amp;quot; );&lt;br /&gt;
    if ( SFso.FileExists( log ) ){&lt;br /&gt;
    editor.OpenFile( log, meOpenAllowNewWindow );&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
SFso = null;&lt;br /&gt;
WshShell = null;&lt;br /&gt;
&lt;br /&gt;
function changeExt( filename, ext ){&lt;br /&gt;
    var s = filename.split( &amp;quot;\\&amp;quot; );&lt;br /&gt;
    var f = s.pop().split( &amp;quot;.&amp;quot; );&lt;br /&gt;
    if ( f.length &amp;gt;= 2 ){&lt;br /&gt;
        f.pop();&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }else{&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }&lt;br /&gt;
    s.push( f.join( &amp;quot;.&amp;quot; ) );&lt;br /&gt;
    return s.join( &amp;quot;\\&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=TeX%E6%96%87%E6%9B%B8%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB&amp;diff=6936</id>
		<title>TeX文書のコンパイル</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=TeX%E6%96%87%E6%9B%B8%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB&amp;diff=6936"/>
		<updated>2023-07-16T03:06:15Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* isari 版 (2020/10) */ キャンセルの挙動を修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 手石 版 ==&lt;br /&gt;
編集中のTeX文書を保存してコンパイルし、pdfで表示します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// タイプセット.js&lt;br /&gt;
// 2013/10/21&lt;br /&gt;
// platex と dvipdfmx はパスが通っている必要があります。&lt;br /&gt;
&lt;br /&gt;
// 拡張子のチェック&lt;br /&gt;
var sary = document.Name.split( &amp;quot;.&amp;quot; );&lt;br /&gt;
if ( ( sary.length &amp;lt;= 1 ) || ( sary.pop() != &amp;quot;tex&amp;quot; ) ){ Alert( &amp;quot;.texではありません。&amp;quot; ); Quit(); }&lt;br /&gt;
&lt;br /&gt;
document.Save();&lt;br /&gt;
var pathdoc = document.FullName;&lt;br /&gt;
var jobname = changeExt( document.Name, &amp;quot;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
// 最後にpdfファイルを開くタイミングを当該ファイルの有無で判断しているので、&lt;br /&gt;
// 古いpdfファイルは削除する。ついでにその他のファイルも……。&lt;br /&gt;
var SFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
var ary = new Array( &amp;quot;pdf&amp;quot;, &amp;quot;aux&amp;quot;, &amp;quot;dvi&amp;quot;, &amp;quot;log&amp;quot;, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
for ( var i in ary ){&lt;br /&gt;
    var file_delete = changeExt( pathdoc, ary[ i ] );&lt;br /&gt;
    if ( SFso.FileExists( file_delete ) ){ SFso.DeleteFile( file_delete ) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
menu.Add( &amp;quot;Ａ４縦置き&amp;quot;, 41, meMenuChecked );&lt;br /&gt;
menu.Add( &amp;quot;Ａ４横置き&amp;quot;, 42, 0 );&lt;br /&gt;
menu.Add( &amp;quot;区切り&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
menu.Add( &amp;quot;Ｂ５縦置き&amp;quot;, 51, 0 );&lt;br /&gt;
menu.Add( &amp;quot;Ｂ５横置き&amp;quot;, 52, 0 );&lt;br /&gt;
menu.Add( &amp;quot;区切り&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
menu.Add( &amp;quot;キャンセル&amp;quot;, 99, 0 );&lt;br /&gt;
//var r = menu.Track( mePosMouse )&lt;br /&gt;
var r = menu.Track( 0 );&lt;br /&gt;
var op_p = &amp;quot;&amp;quot;;&lt;br /&gt;
var op_l = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
switch ( r ){&lt;br /&gt;
case 41:&lt;br /&gt;
    break;&lt;br /&gt;
case 42:&lt;br /&gt;
    op_l = &amp;quot; -l&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 51:&lt;br /&gt;
    op_p = &amp;quot; -p b5&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 52:&lt;br /&gt;
    op_l = &amp;quot; -l&amp;quot;;&lt;br /&gt;
    op_p = &amp;quot; -p b5&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 99:&lt;br /&gt;
    Quit();&lt;br /&gt;
default:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var stdout_log = changeExt( pathdoc, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
var cmd_cd = &#039;cmd /c cd /d &amp;quot;&#039; + document.Path + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_p  = &#039;platex -jobname=&amp;quot;&#039; + jobname + &#039;&amp;quot; &amp;quot;&#039; + pathdoc + &#039;&amp;quot; &amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot; 2&amp;gt;&amp;amp;1&#039;;&lt;br /&gt;
var cmd_d  = &#039;dvipdfmx -v&#039; + op_l + op_p + &#039; &amp;quot;&#039; + changeExt( pathdoc, &amp;quot;&amp;quot; ) + &#039;&amp;quot; &amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot; 2&amp;gt;&amp;amp;1&#039;;&lt;br /&gt;
var cmd_echo1 = &#039;echo.&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo2 = &#039;echo.&amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo1line = &#039;echo ----------&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo2line = &#039;echo ----------&amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
var cmd_ary = [&lt;br /&gt;
    cmd_cd&lt;br /&gt;
    , cmd_echo1line&lt;br /&gt;
    , cmd_p&lt;br /&gt;
    , cmd_echo2, cmd_echo2, cmd_echo2line&lt;br /&gt;
    , cmd_d&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
var windowStyle = { HIDE: 0, NORMALFOCUS: 1 };&lt;br /&gt;
// 処理が終わるまで次へ進まないようブロック（第3引数を”true”）。&lt;br /&gt;
WshShell.Run( cmd_ary.join( &amp;quot; &amp;amp; &amp;quot; ), windowStyle.NORMALFOCUS, true );&lt;br /&gt;
&lt;br /&gt;
// pdfファイルを関連付けで開く。&lt;br /&gt;
var pathpdf = changeExt( pathdoc, &amp;quot;pdf&amp;quot; );&lt;br /&gt;
var trymax = 3;&lt;br /&gt;
for ( var  tryCount = 0; tryCount &amp;lt; trymax; tryCount++){&lt;br /&gt;
    if ( SFso.FileExists( pathpdf ) ){&lt;br /&gt;
        WshShell.Run( &#039;cmd /c &amp;quot;&#039; + pathpdf + &#039;&amp;quot;&#039;, windowStyle.NORMALFOCUS, false );&lt;br /&gt;
        break;&lt;br /&gt;
    }else{&lt;br /&gt;
        Sleep( 500 );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( tryCount &amp;gt;= trymax ){&lt;br /&gt;
    Alert( &amp;quot;pdfファイルが見つかりませんでした。&amp;quot; );&lt;br /&gt;
    openFile( stdout_log );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
SFso = null;&lt;br /&gt;
WshShell = null;&lt;br /&gt;
&lt;br /&gt;
function openFile( fullname ){&lt;br /&gt;
    var i = fileIndex( fullname );&lt;br /&gt;
    if ( i == -1 ){&lt;br /&gt;
        if ( fileExists( fullname ) ){&lt;br /&gt;
            Editor.NewFile();&lt;br /&gt;
            Editor.OpenFile( fullname );&lt;br /&gt;
        }else{&lt;br /&gt;
            Alert( &amp;quot;.TMPがみつかりません！&amp;quot; );&lt;br /&gt;
            return -1;&lt;br /&gt;
        }&lt;br /&gt;
    }else{&lt;br /&gt;
        Editor.Documents.Item( i ).Activate();&lt;br /&gt;
    }&lt;br /&gt;
    return i;&lt;br /&gt;
&lt;br /&gt;
    function fileIndex( fullname ){ &lt;br /&gt;
        for ( var i = Editor.Documents.Count-1; i&amp;gt;=0; i-- ){ &lt;br /&gt;
            if ( Editor.Documents.Item( i ).FullName == fullname ){ return i }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function fileExists( filename ){&lt;br /&gt;
    var objFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
    var result = objFso.FileExists( filename );&lt;br /&gt;
    objFso = null;&lt;br /&gt;
    return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function changeExt( filename, ext ){&lt;br /&gt;
    var s = filename.split( &amp;quot;\\&amp;quot; );&lt;br /&gt;
    var f = s.pop().split( &amp;quot;.&amp;quot; );&lt;br /&gt;
    if ( f.length &amp;gt;= 2 ){&lt;br /&gt;
        f.pop();&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }else{&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }&lt;br /&gt;
    s.push( f.join( &amp;quot;.&amp;quot; ) );&lt;br /&gt;
    return s.join( &amp;quot;\\&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== isari 版 (2023/07) ==&lt;br /&gt;
手石さんの版を元に、TeX処理系と受け入れる拡張子、PDF表示ソフトをカスタムできるようにしました。オプションの値を変更してお好みの設定にしてください。手石版で指定できた用紙サイズなどはTeX側のクラスオプションで行うものとします。&lt;br /&gt;
&lt;br /&gt;
=== 更新履歴 ===&lt;br /&gt;
* 2020/10/16&lt;br /&gt;
** 初版公開&lt;br /&gt;
* 2023/07/16&lt;br /&gt;
** escキーでキャンセルができていなかったのと、キャンセルされても補助ファイルを削除してしまっていたのを修正。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;TeXコンパイル改&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// 2020/10/16 - 2023/07/16&lt;br /&gt;
&lt;br /&gt;
// ------------ オプション ------------&lt;br /&gt;
// 受け入れる拡張子&lt;br /&gt;
var exts = [ &amp;quot;tex&amp;quot;, &amp;quot;bib&amp;quot;, &amp;quot;txt&amp;quot; ];&lt;br /&gt;
&lt;br /&gt;
// TeX処理系&lt;br /&gt;
// キーをポップアップメニューに表示したい文字列、値をシェルに渡す文字列として適宜追加・編集してください。各処理系にはパスが通っている必要があります。&lt;br /&gt;
var engines = { &amp;quot;pLaTeX&amp;quot;: &amp;quot;ptex2pdf -l -ot -kanji=utf8&amp;quot;, &amp;quot;upLaTeX&amp;quot;: &amp;quot;ptex2pdf -u -l -ot&amp;quot;, &amp;quot;LuaLaTeX&amp;quot;: &amp;quot;lualatex&amp;quot;, &amp;quot;XeLaTeX&amp;quot;: &amp;quot;xelatex&amp;quot; };&lt;br /&gt;
&lt;br /&gt;
// syncTeXオプション&lt;br /&gt;
var synctex = &amp;quot;-synctex=1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// シェルの表示オプション&lt;br /&gt;
// 1にするとシェルのウィンドウが立ち上がり出力を表示、0にすると非表示になります。他にも10までの整数が指定できます。詳細は[WSHのドキュメント](https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364421(v=msdn.10))を参照してください。&lt;br /&gt;
var windowStyle = 1;&lt;br /&gt;
&lt;br /&gt;
// PDFビューワー&lt;br /&gt;
// 実行ファイルの場所をフルパス、バックスラッシュ2つ区切りで指定してください。必ず外側をシングル、内側をダブルのクオーテーションで囲みます。nullにすると規定のプログラムで開きます。&lt;br /&gt;
var pdfViewer = &#039;&amp;quot;C:\\Program Files\\SumatraPDF\\SumatraPDF.exe&amp;quot;&#039;;&lt;br /&gt;
// ------------------------------------&lt;br /&gt;
&lt;br /&gt;
// 拡張子のチェック&lt;br /&gt;
var sary = document.Name.split( &amp;quot;.&amp;quot; );&lt;br /&gt;
if ( ( sary.length &amp;lt;= 1 ) || ( exts.indexOf( sary.pop() ) == -1 ) ){&lt;br /&gt;
    Alert( &amp;quot;TeX文書ではありません。&amp;quot; );&lt;br /&gt;
    Quit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 手動で保存したければ次の行をコメントアウト&lt;br /&gt;
document.Save();&lt;br /&gt;
var filename = document.Name;&lt;br /&gt;
var path = document.Path;&lt;br /&gt;
var filepath = document.FullName;&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
var keys = Object.keys( engines );&lt;br /&gt;
keys.forEach( function( key, index ) {&lt;br /&gt;
    menu.Add( key, index + 1 );&lt;br /&gt;
} );&lt;br /&gt;
menu.Add( &amp;quot;キャンセル&amp;quot;, 0 );&lt;br /&gt;
// マウスポインタの位置にポップアップを表示したければTrack( mePosMouse )に&lt;br /&gt;
var r = menu.Track( 0 );&lt;br /&gt;
var key = &amp;quot;&amp;quot;, engine = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if ( r !== 0 &amp;amp;&amp;amp; r &amp;lt;= keys.length ){&lt;br /&gt;
    key = keys[r - 1];&lt;br /&gt;
    engine = engines[key];&lt;br /&gt;
}else if ( r === 0 ){&lt;br /&gt;
    Quit();&lt;br /&gt;
}else{&lt;br /&gt;
    Alert( &amp;quot;指定が正しくありません。&amp;quot; );&lt;br /&gt;
    Quit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 古いpdfファイルと補助ファイルの削除&lt;br /&gt;
var SFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
var ary = new Array( &amp;quot;pdf&amp;quot;, &amp;quot;aux&amp;quot;, &amp;quot;dvi&amp;quot;, &amp;quot;log&amp;quot;, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
for ( var i in ary ){&lt;br /&gt;
    var file_delete = changeExt( filepath, ary[ i ] );&lt;br /&gt;
    if ( SFso.FileExists( file_delete ) ){ SFso.DeleteFile( file_delete ) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var typeset = engine + &amp;quot; &amp;quot; + synctex + &amp;quot; &amp;quot; + filename;&lt;br /&gt;
&lt;br /&gt;
var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
WshShell.CurrentDirectory = path;&lt;br /&gt;
WshShell.Run( typeset, windowStyle, true );&lt;br /&gt;
&lt;br /&gt;
// pdfファイルを開く&lt;br /&gt;
var pdfpath = changeExt( filepath, &amp;quot;pdf&amp;quot; );&lt;br /&gt;
var openpdf = pdfViewer ? pdfViewer + &amp;quot; &amp;quot; + pdfpath : pdfpath;&lt;br /&gt;
var trymax = 3;&lt;br /&gt;
for ( var  tryCount = 0; tryCount &amp;lt; trymax; tryCount++){&lt;br /&gt;
    if ( SFso.FileExists( pdfpath ) ){&lt;br /&gt;
        WshShell.Run( openpdf );&lt;br /&gt;
        break;&lt;br /&gt;
    }else{&lt;br /&gt;
        Sleep( 500 );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( tryCount &amp;gt;= trymax ){&lt;br /&gt;
    Alert( &amp;quot;pdfファイルが見つかりませんでした。&amp;quot; );&lt;br /&gt;
    var log = changeExt( filepath, &amp;quot;log&amp;quot; );&lt;br /&gt;
    if ( SFso.FileExists( log ) ){&lt;br /&gt;
    editor.OpenFile( log, meOpenAllowNewWindow );&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
SFso = null;&lt;br /&gt;
WshShell = null;&lt;br /&gt;
&lt;br /&gt;
function changeExt( filename, ext ){&lt;br /&gt;
    var s = filename.split( &amp;quot;\\&amp;quot; );&lt;br /&gt;
    var f = s.pop().split( &amp;quot;.&amp;quot; );&lt;br /&gt;
    if ( f.length &amp;gt;= 2 ){&lt;br /&gt;
        f.pop();&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }else{&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }&lt;br /&gt;
    s.push( f.join( &amp;quot;.&amp;quot; ) );&lt;br /&gt;
    return s.join( &amp;quot;\\&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=6935</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=6935"/>
		<updated>2023-07-16T02:36:41Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* テキスト操作補助 */ 「日付と時刻を挿入」に追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子 &amp;quot;js&amp;quot;（JavaScript、JScript の場合）にして Macros フォルダーなどに保存し、[マクロ] メニューの [選択] や [カスタマイズ] から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
Mery Ver 2.6.6（2018年3月22日）以前に作成されたマクロが動作しない場合は下記のページを参照してください。&lt;br /&gt;
* [https://www.haijin-boys.com/discussions/6929 公式のマクロ 箇条書きが最新メリーで動作するかチェックいただけませんか？]&lt;br /&gt;
* [https://www.haijin-boys.com/software/mery/mery-2-6-6 テキストエディター「Mery」ベータ版 Ver 2.6.6 を公開、JavaScript エンジン Chakra に対応]&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
* [https://github.com/haijinboys/mery-macro-emmet Emmet] (Kuro)&lt;br /&gt;
* [[Zen Coding]] (Kuro)&lt;br /&gt;
* [[対応する括弧に移動]] (Kuro, kurama, masme)&lt;br /&gt;
* [[行頭に移動]] (Kuro, 他)&lt;br /&gt;
* [[VSCode風、行頭/行末に移動]] (yuko)&lt;br /&gt;
* [[バイト数]] (Kuro, ks)&lt;br /&gt;
* [[日付と時刻を挿入]] (n, masme, isari)&lt;br /&gt;
* [[日付と時刻を挿入（カレンダー版）]] (papagoat)&lt;br /&gt;
* [[選択範囲を上下に移動]] (ks)&lt;br /&gt;
* [[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
* [[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
* [[Vz 風テキストスタック 2 ストロークキー]] (papagoat)&lt;br /&gt;
* [[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
* [[ラクラク罫線]] (手石)&lt;br /&gt;
* [[ファイル:XHTML.zip]] (アラフォー親父) HTMLタグを、ショートカット・キーに登録して入力するマクロ（文章挟み込み仕様）。&lt;br /&gt;
* [[自動箇条書き]] (手石)&lt;br /&gt;
* [[インデントを考慮した折り返し（改行挿入）]] (手石)&lt;br /&gt;
* [[青空文庫用整形補助]] (ks, 有志)&lt;br /&gt;
* [[部分編集]] (ks)&lt;br /&gt;
* [[文字カウント]] (masme)&lt;br /&gt;
* [[字下げ・字上げ]] (インデント・逆インデント) (masme)&lt;br /&gt;
* [[数値を増減]] (インクリメント・デクリメント) (masme)&lt;br /&gt;
* [[自動ルビ振り]] (急急如律令)&lt;br /&gt;
* [[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko)&lt;br /&gt;
* [[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
* [[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
* [[アウトライン用ノード追加]] (mik)&lt;br /&gt;
* [[アウトラインのノードレベルを上げる]] (mik)&lt;br /&gt;
* [[アウトラインのノードレベルを下げる]] (mik)&lt;br /&gt;
* [[アウトラインのノードの完了/未完了を切り替える]] (mik)&lt;br /&gt;
* [[ハルナアウトライン用の完了/未完了フラグをノード名に反映する]] (mik)&lt;br /&gt;
* [[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist, yuko)&lt;br /&gt;
* [[Markdown 向け、リスト記号 (*) のトグル]] (yuko)&lt;br /&gt;
* [[Markdown 向け、タスクリスト (* ［］) のチェック状態をトグル]] (yuko)&lt;br /&gt;
* [[何年生で習う漢字？]] (シリル)&lt;br /&gt;
* [[上に行挿入]] (yuko)&lt;br /&gt;
* [[選択範囲を広げる]] (yuko)&lt;br /&gt;
* [[新規行番号入力]] (Takuma 他)&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
* [[パスを取得]] (Kuro)&lt;br /&gt;
* [[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
* [[ファイルを比較]] (Kuro)&lt;br /&gt;
* [[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
* [[文字列中のパス起動]] (ks)&lt;br /&gt;
* [[パス・URLを開く_コマンドを実行する]] (yuko)&lt;br /&gt;
* [[開いている文書のファイル名を変更する]] (yuko)&lt;br /&gt;
* [[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
* [[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
* [[ブックマーク一覧ジャンプ]] ※ポップアップメニュー (goat)&lt;br /&gt;
* [[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
* [[フォルダを開く]] (n)&lt;br /&gt;
* [[コマンドプロンプトを開く]] (n)&lt;br /&gt;
* [[よく使うフォルダ]] (手石)&lt;br /&gt;
* [[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
* [[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
* [[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
* [[タグジャンプ]] (o)&lt;br /&gt;
* [[ウィンドウの位置とサイズを拡張子で指定]] (papagoat)&lt;br /&gt;
* [[編集モードの自動選択]] (Bleat)&lt;br /&gt;
* [[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
* [[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
* [[標準変換]] (Kuro, MSY-07)&lt;br /&gt;
* [[テキスト変換]] (ks)&lt;br /&gt;
* [[テキスト整形]] (masme)&lt;br /&gt;
* [[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
* [[Wikipedia表記修正]] (MSY-07)&lt;br /&gt;
* [[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
* [[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
* [[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
* [[clustal-omegaを用いてアライメントを実行]] (suke)&lt;br /&gt;
* [[連番の挿入]] (手石)&lt;br /&gt;
* [[TSV(CSV) ⇒ 固定長]] (手石)&lt;br /&gt;
* [[行並べ替え]] (masme)&lt;br /&gt;
* [[連番を挿入]] (masme)&lt;br /&gt;
* [[GFMをHTMLに変換]] (noonworks)&lt;br /&gt;
* [[基数変換10_16]] (シリル)&lt;br /&gt;
* [[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
* [[文書から検索]] (Kuro)&lt;br /&gt;
* [[単語を抽出]] (Kuro)&lt;br /&gt;
* [[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
* [[ポップアップメニューで検索先にジャンプ]] (手石)&lt;br /&gt;
* [[検索(SJIS以外)]] + 検索強調を解除 (masme)&lt;br /&gt;
* [https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英) → [[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
* [https://github.com/GunseiPaseri/Mery_macro 文字出現量ランキング] (群生系パセリ)&lt;br /&gt;
* [[検索ヒット数表示]] (ks)&lt;br /&gt;
* [[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
* [[任意の検索エンジンで検索ー改良版]] (Takeshi)&lt;br /&gt;
* [[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
* [[複数置換]] (Noah)&lt;br /&gt;
* [[類義語アウトプット【Python】]] (シリル)&lt;br /&gt;
* [[校正支援アウトプット]] (シリル)&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
* [[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
* [[Eclipse風コメントアウト(改)]] (pizz)&lt;br /&gt;
* [[コメントマーク付け外し]] (手石, masme)&lt;br /&gt;
* [[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
* [[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
* [[タグファイルから補完]] (n)&lt;br /&gt;
* [[コードスニペットもどき]] (手石)&lt;br /&gt;
* [[TeX文書のコンパイル]] (手石, isari)&lt;br /&gt;
* [[TeX数式のチェック]] (手石)&lt;br /&gt;
* [[簡易数式計算]] (ks)&lt;br /&gt;
* [[定義へ移動]] (ks)&lt;br /&gt;
* [[タブの桁数]] (手石)&lt;br /&gt;
* [[行末の空白を削除]] (n)&lt;br /&gt;
* [https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを実行] (高見知英) 掲載時点ではバッチファイル・Javascript・Lua・PHP・Perl・Python・Ruby・UWSCに対応。順次追加予定。&lt;br /&gt;
* [https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを構文チェック] (高見知英) 掲載時点ではPHP・Perlに対応。順次追加予定。&lt;br /&gt;
* [[説明を出力]] (s)&lt;br /&gt;
* [[拡張子からコンソール実行]] (YOS G-spec)&lt;br /&gt;
* [[JSON整形]] (Ovis)&lt;br /&gt;
* [[ScriptRun]] (Scriptコードの実行) (fuka)&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
* [[メール送信]] (ks)&lt;br /&gt;
* [[あつまれ☆みんなのおもしろアイコン]] (有志)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
* [[HSPキーワード検索]] (SSSE)&lt;br /&gt;
* [[最新版を確認]] (diaphragm)&lt;br /&gt;
* [[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
* [[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
* [[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
* [[JavaScript を実行]] (n)&lt;br /&gt;
* [[Ruby を実行]] (n)&lt;br /&gt;
* [[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
* [[マクロ・関数をメニューで呼び出す]] (aliquis)&lt;br /&gt;
* [[階層化マクロメニュー]] (ks)&lt;br /&gt;
* [[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
* [[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
* [[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
* [[Editor.OpenFile()のポリフィル]] (kazy)&lt;br /&gt;
* [[折り返しトグル切り替え]] (Bleat)&lt;br /&gt;
* [[Beep音の例]] (star0worshipper)&lt;br /&gt;
* [[ブラウザ風タブ移動]] (yuko)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* [[キーアサイン集]] (ks, masme, 有志)&lt;br /&gt;
* [[includeライブラリ]] (ks)&lt;br /&gt;
* [[GetKeyState.exe(キー状態取得実行ファイル)]] (pizz)&lt;br /&gt;
* [[マクロ覚え書き（開発者向け）]] (ks, 有志)&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E6%97%A5%E4%BB%98%E3%81%A8%E6%99%82%E5%88%BB%E3%82%92%E6%8C%BF%E5%85%A5&amp;diff=6934</id>
		<title>日付と時刻を挿入</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E6%97%A5%E4%BB%98%E3%81%A8%E6%99%82%E5%88%BB%E3%82%92%E6%8C%BF%E5%85%A5&amp;diff=6934"/>
		<updated>2023-07-16T02:34:24Z</updated>

		<summary type="html">&lt;p&gt;Isari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== n 版 ==&lt;br /&gt;
メモ帳のF5キーの再現です。いまの時刻をカーソル位置に挿入します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 日付と時刻を挿入.js&lt;br /&gt;
d = new Date&lt;br /&gt;
&lt;br /&gt;
document.selection.Text = d.getHours() + &#039;:&#039; + p(d.getMinutes()) + &#039; &#039; + [p(d.getYear()), p(d.getMonth() + 1), p(d.getDate())].join(&#039;/&#039;)&lt;br /&gt;
&lt;br /&gt;
function p(x) { return x &amp;lt; 10 ? &#039;0&#039; + x : x }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== masme 版 ==&lt;br /&gt;
書式設定（※下表参考）を元に現在日時を出力・挿入します。&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 書式設定の例 !! 出力結果の例&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;h:mm YYYY/MM/DD&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;4:05 2001/02/03&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;YYYY-MM-DD hh:mm:ss&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;2001-02-03 04:05:06&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ddd, MMM D, YYYY&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;Sat, Feb 3, 2001&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;YY年M月D日(d) h時m分s秒&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;01年2月3日(土) 4時5分6秒&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;hhmm &#039;hhmm&#039; h&#039;hm&#039;m &amp;amp;#x27;&amp;amp;#x27;&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;0405 hhmm 4hm5 &#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 更新履歴 ===&lt;br /&gt;
; 2016/02/28&lt;br /&gt;
* 書式 d と ddd の内容を交換し、d を 日～土 出力、ddd を Sun～Sat 出力にした。&lt;br /&gt;
** MMM が Jan～Dec 出力なので字数を揃えた。&lt;br /&gt;
* アポストロフィー &amp;lt;code&amp;gt;&#039;&amp;lt;/code&amp;gt; によるエスケープを導入。&lt;br /&gt;
; 2014/02/12&lt;br /&gt;
* 初版公開。&lt;br /&gt;
&lt;br /&gt;
=== ソースコード ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//■日付と時刻&lt;br /&gt;
//　2014/02/12-2016/02/28&lt;br /&gt;
&lt;br /&gt;
//■書式設定 ●初期値=&amp;quot;h:mm YYYY/MM/DD&amp;quot;&lt;br /&gt;
var format = &amp;quot;h:mm YYYY/MM/DD&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
var symbol = (function(){&lt;br /&gt;
  var t = new Date(), pad = function(n){return n&amp;lt;10? &amp;quot;0&amp;quot;+n : n};&lt;br /&gt;
  return {&lt;br /&gt;
  &amp;quot;YYYY&amp;quot;:  (t.getFullYear()),&lt;br /&gt;
  &amp;quot;YY&amp;quot;: pad(t.getFullYear()%100),&lt;br /&gt;
  &amp;quot;MMM&amp;quot;: [&amp;quot;Jan&amp;quot;,&amp;quot;Feb&amp;quot;,&amp;quot;Mar&amp;quot;,&amp;quot;Apr&amp;quot;,&amp;quot;May&amp;quot;,&amp;quot;Jun&amp;quot;,&amp;quot;Jul&amp;quot;,&amp;quot;Aug&amp;quot;,&amp;quot;Sep&amp;quot;,&amp;quot;Oct&amp;quot;,&amp;quot;Nov&amp;quot;,&amp;quot;Dec&amp;quot;][t.getMonth()],&lt;br /&gt;
  &amp;quot;MM&amp;quot;: pad(t.getMonth()+1),&lt;br /&gt;
  &amp;quot;M&amp;quot;:     (t.getMonth()+1),&lt;br /&gt;
  &amp;quot;DD&amp;quot;: pad(t.getDate()),&lt;br /&gt;
  &amp;quot;D&amp;quot;:     (t.getDate()),&lt;br /&gt;
  &amp;quot;ddd&amp;quot;: [&amp;quot;Sun&amp;quot;,&amp;quot;Mon&amp;quot;,&amp;quot;Tue&amp;quot;,&amp;quot;Wed&amp;quot;,&amp;quot;Thu&amp;quot;,&amp;quot;Fri&amp;quot;,&amp;quot;Sat&amp;quot;][t.getDay()],&lt;br /&gt;
  &amp;quot;d&amp;quot;:   [&amp;quot;日&amp;quot;,&amp;quot;月&amp;quot;,&amp;quot;火&amp;quot;,&amp;quot;水&amp;quot;,&amp;quot;木&amp;quot;,&amp;quot;金&amp;quot;,&amp;quot;土&amp;quot;][t.getDay()],&lt;br /&gt;
  &amp;quot;hh&amp;quot;: pad(t.getHours()),&lt;br /&gt;
  &amp;quot;h&amp;quot;:     (t.getHours()),&lt;br /&gt;
  &amp;quot;mm&amp;quot;: pad(t.getMinutes()),&lt;br /&gt;
  &amp;quot;m&amp;quot;:     (t.getMinutes()),&lt;br /&gt;
  &amp;quot;ss&amp;quot;: pad(t.getSeconds()),&lt;br /&gt;
  &amp;quot;s&amp;quot;:     (t.getSeconds())&lt;br /&gt;
  };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
var result = format.replace(/(&#039;)(.*?)\1|([YMDdhms])\3*/g,&lt;br /&gt;
  function($0,esc,ltr){return ltr || esc || symbol[$0] || $0;}&lt;br /&gt;
);&lt;br /&gt;
Document.Write(result);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== isari 版(2023/07/16) ==&lt;br /&gt;
masmeさん版を、12時間表記に対応させポップアップメニューからフォーマットを選べるようにしたものです。複数の様式を使い分ける必要がある時にご利用ください。Mery2.6.6以降で動作します（以前の方は&amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt;と&amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;を全て&amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;に置き換えてください）。&lt;br /&gt;
&lt;br /&gt;
書式はmasmeさんの表に加え以下のように12時間を表す大文字の H/HH 、「午前／午後」どちらかに置き換えられる ampm が拡張されています。&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 書式設定の例 !! 出力結果の例&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ampmH時m分、&#039;ampm&#039;に行った。&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;午後3時7分、ampmに行った。&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;選択式日付と時刻&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// 2023/07/16&lt;br /&gt;
// 原版: masme 2014/02/12-2016/02/28&lt;br /&gt;
&lt;br /&gt;
// 書式リスト。お好きな文字列に書き換え・追加してください。キーがポップアップメニューに表示されるラベル、値が書式のフォーマットです。&lt;br /&gt;
const formatDefinition = {&amp;quot;ISO 8601&amp;quot;: &amp;quot;YYYY-MM-DDThh:mm:ss+09:00&amp;quot;, &amp;quot;23年7月7日（金）午後3時7分&amp;quot;: &amp;quot;YY年M月D日（d）ampmH時m分&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// 書式選択&lt;br /&gt;
const menu = CreatePopupMenu();&lt;br /&gt;
const formatKeys = Object.keys(formatDefinition);&lt;br /&gt;
formatKeys.forEach(function(key, index) {&lt;br /&gt;
  menu.Add(key, index + 1);&lt;br /&gt;
});&lt;br /&gt;
menu.Add(&amp;quot;キャンセル&amp;quot;, 0);&lt;br /&gt;
// マウスポインタの位置にポップアップを表示したければTrack(mePosMouse)に&lt;br /&gt;
const selected = menu.Track(0);&lt;br /&gt;
let formatKey = &amp;quot;&amp;quot;, format = &amp;quot;h:mm YYYY/MM/DD&amp;quot;;&lt;br /&gt;
if (selected !== 0 &amp;amp;&amp;amp; selected &amp;lt;= formatKeys.length){&lt;br /&gt;
  formatKey = formatKeys[selected - 1];&lt;br /&gt;
  format = formatDefinition[formatKey];&lt;br /&gt;
}else if (selected === 0){&lt;br /&gt;
  Quit();&lt;br /&gt;
}else{&lt;br /&gt;
  Alert(&amp;quot;指定が正しくありません。&amp;quot;);&lt;br /&gt;
  Quit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const symbol = (function(){&lt;br /&gt;
  const t = new Date(), pad = function(n){return n&amp;lt;10? &amp;quot;0&amp;quot;+n : n};&lt;br /&gt;
  return {&lt;br /&gt;
  &amp;quot;YYYY&amp;quot;:  (t.getFullYear()),&lt;br /&gt;
  &amp;quot;YY&amp;quot;: pad(t.getFullYear()%100),&lt;br /&gt;
  &amp;quot;MMM&amp;quot;: [&amp;quot;Jan&amp;quot;,&amp;quot;Feb&amp;quot;,&amp;quot;Mar&amp;quot;,&amp;quot;Apr&amp;quot;,&amp;quot;May&amp;quot;,&amp;quot;Jun&amp;quot;,&amp;quot;Jul&amp;quot;,&amp;quot;Aug&amp;quot;,&amp;quot;Sep&amp;quot;,&amp;quot;Oct&amp;quot;,&amp;quot;Nov&amp;quot;,&amp;quot;Dec&amp;quot;][t.getMonth()],&lt;br /&gt;
  &amp;quot;MM&amp;quot;: pad(t.getMonth()+1),&lt;br /&gt;
  &amp;quot;M&amp;quot;:     (t.getMonth()+1),&lt;br /&gt;
  &amp;quot;DD&amp;quot;: pad(t.getDate()),&lt;br /&gt;
  &amp;quot;D&amp;quot;:     (t.getDate()),&lt;br /&gt;
  &amp;quot;ddd&amp;quot;: [&amp;quot;Sun&amp;quot;,&amp;quot;Mon&amp;quot;,&amp;quot;Tue&amp;quot;,&amp;quot;Wed&amp;quot;,&amp;quot;Thu&amp;quot;,&amp;quot;Fri&amp;quot;,&amp;quot;Sat&amp;quot;][t.getDay()],&lt;br /&gt;
  &amp;quot;d&amp;quot;:   [&amp;quot;日&amp;quot;,&amp;quot;月&amp;quot;,&amp;quot;火&amp;quot;,&amp;quot;水&amp;quot;,&amp;quot;木&amp;quot;,&amp;quot;金&amp;quot;,&amp;quot;土&amp;quot;][t.getDay()],&lt;br /&gt;
  &amp;quot;hh&amp;quot;: pad(t.getHours()),&lt;br /&gt;
  &amp;quot;h&amp;quot;:     (t.getHours()),&lt;br /&gt;
  &amp;quot;HH&amp;quot;: pad(t.getHours()%12),&lt;br /&gt;
  &amp;quot;H&amp;quot;:     (t.getHours()%12),&lt;br /&gt;
  &amp;quot;mm&amp;quot;: pad(t.getMinutes()),&lt;br /&gt;
  &amp;quot;m&amp;quot;:     (t.getMinutes()),&lt;br /&gt;
  &amp;quot;ss&amp;quot;: pad(t.getSeconds()),&lt;br /&gt;
  &amp;quot;s&amp;quot;:     (t.getSeconds()),&lt;br /&gt;
  &amp;quot;ampm&amp;quot;:  (t.getHours() &amp;lt; 12 ? &amp;quot;午前&amp;quot; : &amp;quot;午後&amp;quot;)&lt;br /&gt;
  };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
const result = format.replace(/(&#039;)(.*?)\1|ampm|([YMDdHhms])\3*/g,&lt;br /&gt;
  function($0,esc,ltr){return ltr || esc || symbol[$0] || $0;}&lt;br /&gt;
);&lt;br /&gt;
Document.Write(result);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E6%97%A5%E4%BB%98%E3%81%A8%E6%99%82%E5%88%BB%E3%82%92%E6%8C%BF%E5%85%A5&amp;diff=6933</id>
		<title>日付と時刻を挿入</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E6%97%A5%E4%BB%98%E3%81%A8%E6%99%82%E5%88%BB%E3%82%92%E6%8C%BF%E5%85%A5&amp;diff=6933"/>
		<updated>2023-07-16T02:24:49Z</updated>

		<summary type="html">&lt;p&gt;Isari: isari版（12時間対応のフォーマット選択可）を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== n 版 ==&lt;br /&gt;
メモ帳のF5キーの再現です。いまの時刻をカーソル位置に挿入します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 日付と時刻を挿入.js&lt;br /&gt;
d = new Date&lt;br /&gt;
&lt;br /&gt;
document.selection.Text = d.getHours() + &#039;:&#039; + p(d.getMinutes()) + &#039; &#039; + [p(d.getYear()), p(d.getMonth() + 1), p(d.getDate())].join(&#039;/&#039;)&lt;br /&gt;
&lt;br /&gt;
function p(x) { return x &amp;lt; 10 ? &#039;0&#039; + x : x }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== masme 版 ==&lt;br /&gt;
書式設定（※下表参考）を元に現在日時を出力・挿入します。&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 書式設定の例 !! 出力結果の例&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;h:mm YYYY/MM/DD&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;4:05 2001/02/03&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;YYYY-MM-DD hh:mm:ss&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;2001-02-03 04:05:06&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ddd, MMM D, YYYY&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;Sat, Feb 3, 2001&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;YY年M月D日(d) h時m分s秒&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;01年2月3日(土) 4時5分6秒&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;hhmm &#039;hhmm&#039; h&#039;hm&#039;m &amp;amp;#x27;&amp;amp;#x27;&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;0405 hhmm 4hm5 &#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 更新履歴 ===&lt;br /&gt;
; 2016/02/28&lt;br /&gt;
* 書式 d と ddd の内容を交換し、d を 日～土 出力、ddd を Sun～Sat 出力にした。&lt;br /&gt;
** MMM が Jan～Dec 出力なので字数を揃えた。&lt;br /&gt;
* アポストロフィー &amp;lt;code&amp;gt;&#039;&amp;lt;/code&amp;gt; によるエスケープを導入。&lt;br /&gt;
; 2014/02/12&lt;br /&gt;
* 初版公開。&lt;br /&gt;
&lt;br /&gt;
=== ソースコード ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//■日付と時刻&lt;br /&gt;
//　2014/02/12-2016/02/28&lt;br /&gt;
&lt;br /&gt;
//■書式設定 ●初期値=&amp;quot;h:mm YYYY/MM/DD&amp;quot;&lt;br /&gt;
var format = &amp;quot;h:mm YYYY/MM/DD&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
var symbol = (function(){&lt;br /&gt;
  var t = new Date(), pad = function(n){return n&amp;lt;10? &amp;quot;0&amp;quot;+n : n};&lt;br /&gt;
  return {&lt;br /&gt;
  &amp;quot;YYYY&amp;quot;:  (t.getFullYear()),&lt;br /&gt;
  &amp;quot;YY&amp;quot;: pad(t.getFullYear()%100),&lt;br /&gt;
  &amp;quot;MMM&amp;quot;: [&amp;quot;Jan&amp;quot;,&amp;quot;Feb&amp;quot;,&amp;quot;Mar&amp;quot;,&amp;quot;Apr&amp;quot;,&amp;quot;May&amp;quot;,&amp;quot;Jun&amp;quot;,&amp;quot;Jul&amp;quot;,&amp;quot;Aug&amp;quot;,&amp;quot;Sep&amp;quot;,&amp;quot;Oct&amp;quot;,&amp;quot;Nov&amp;quot;,&amp;quot;Dec&amp;quot;][t.getMonth()],&lt;br /&gt;
  &amp;quot;MM&amp;quot;: pad(t.getMonth()+1),&lt;br /&gt;
  &amp;quot;M&amp;quot;:     (t.getMonth()+1),&lt;br /&gt;
  &amp;quot;DD&amp;quot;: pad(t.getDate()),&lt;br /&gt;
  &amp;quot;D&amp;quot;:     (t.getDate()),&lt;br /&gt;
  &amp;quot;ddd&amp;quot;: [&amp;quot;Sun&amp;quot;,&amp;quot;Mon&amp;quot;,&amp;quot;Tue&amp;quot;,&amp;quot;Wed&amp;quot;,&amp;quot;Thu&amp;quot;,&amp;quot;Fri&amp;quot;,&amp;quot;Sat&amp;quot;][t.getDay()],&lt;br /&gt;
  &amp;quot;d&amp;quot;:   [&amp;quot;日&amp;quot;,&amp;quot;月&amp;quot;,&amp;quot;火&amp;quot;,&amp;quot;水&amp;quot;,&amp;quot;木&amp;quot;,&amp;quot;金&amp;quot;,&amp;quot;土&amp;quot;][t.getDay()],&lt;br /&gt;
  &amp;quot;hh&amp;quot;: pad(t.getHours()),&lt;br /&gt;
  &amp;quot;h&amp;quot;:     (t.getHours()),&lt;br /&gt;
  &amp;quot;mm&amp;quot;: pad(t.getMinutes()),&lt;br /&gt;
  &amp;quot;m&amp;quot;:     (t.getMinutes()),&lt;br /&gt;
  &amp;quot;ss&amp;quot;: pad(t.getSeconds()),&lt;br /&gt;
  &amp;quot;s&amp;quot;:     (t.getSeconds())&lt;br /&gt;
  };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
var result = format.replace(/(&#039;)(.*?)\1|([YMDdhms])\3*/g,&lt;br /&gt;
  function($0,esc,ltr){return ltr || esc || symbol[$0] || $0;}&lt;br /&gt;
);&lt;br /&gt;
Document.Write(result);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== isari 版(2023/07/16) ==&lt;br /&gt;
masmeさん版を、12時間表記に対応させポップアップメニューからフォーマットを選べるようにしたものです。複数の様式を使い分ける必要がある時にご利用ください。Mery2.6.6以降で動作します（以前の方は&amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt;と&amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;を全て&amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;に置き換えてください）。&lt;br /&gt;
&lt;br /&gt;
書式はmasmeさんの表に加え以下のように12時間を表す大文字の H/HH 、「午前／午後」どちらかに置き換えられる ampm が拡張されています。&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 書式設定の例 !! 出力結果の例&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ampmH時m分、&#039;ampm&#039;に行った。&amp;lt;/code&amp;gt; ||&amp;lt;code&amp;gt;午後3時7分、ampmに行った。&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;選択式日付と時刻&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// 2023/07/16&lt;br /&gt;
// 原版: masme 2014/02/12-2016/02/28&lt;br /&gt;
&lt;br /&gt;
// 書式リスト。お好きな文字列に書き換え・追加してください。キーがポップアップメニューに表示されるラベル、値が書式のフォーマットです。&lt;br /&gt;
const formatDefinition = {&amp;quot;ISO 8601&amp;quot;: &amp;quot;YYYY-MM-DDThh:mm:ss+09:00&amp;quot;, &amp;quot;23年7月7日（金）午後3時7分&amp;quot;: &amp;quot;YY年M月D日（d）ampmH時m分&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// 書式選択&lt;br /&gt;
const menu = CreatePopupMenu();&lt;br /&gt;
const formatKeys = Object.keys(formatDefinition);&lt;br /&gt;
formatKeys.forEach(function(key, index) {&lt;br /&gt;
  menu.Add(key, index + 1);&lt;br /&gt;
});&lt;br /&gt;
menu.Add(&amp;quot;キャンセル&amp;quot;, 0);&lt;br /&gt;
// マウスポインタの位置にポップアップを表示したければTrack(mePosMouse)に&lt;br /&gt;
const selected = menu.Track(0);&lt;br /&gt;
let formatKey = &amp;quot;&amp;quot;, format = &amp;quot;h:mm YYYY/MM/DD&amp;quot;;&lt;br /&gt;
if (selected !== 0 &amp;amp;&amp;amp; selected &amp;lt;= formatKeys.length){&lt;br /&gt;
  formatKey = formatKeys[selected - 1];&lt;br /&gt;
  format = formatDefinition[formatKey];&lt;br /&gt;
}else if (selected === 0){&lt;br /&gt;
  Quit();&lt;br /&gt;
}else{&lt;br /&gt;
  Alert(&amp;quot;指定が正しくありません。&amp;quot;);&lt;br /&gt;
  Quit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const symbol = (function(){&lt;br /&gt;
  const t = new Date(), pad = function(n){return n&amp;lt;10? &amp;quot;0&amp;quot;+n : n};&lt;br /&gt;
  return {&lt;br /&gt;
  &amp;quot;YYYY&amp;quot;:  (t.getFullYear()),&lt;br /&gt;
  &amp;quot;YY&amp;quot;: pad(t.getFullYear()%100),&lt;br /&gt;
  &amp;quot;MMM&amp;quot;: [&amp;quot;Jan&amp;quot;,&amp;quot;Feb&amp;quot;,&amp;quot;Mar&amp;quot;,&amp;quot;Apr&amp;quot;,&amp;quot;May&amp;quot;,&amp;quot;Jun&amp;quot;,&amp;quot;Jul&amp;quot;,&amp;quot;Aug&amp;quot;,&amp;quot;Sep&amp;quot;,&amp;quot;Oct&amp;quot;,&amp;quot;Nov&amp;quot;,&amp;quot;Dec&amp;quot;][t.getMonth()],&lt;br /&gt;
  &amp;quot;MM&amp;quot;: pad(t.getMonth()+1),&lt;br /&gt;
  &amp;quot;M&amp;quot;:     (t.getMonth()+1),&lt;br /&gt;
  &amp;quot;DD&amp;quot;: pad(t.getDate()),&lt;br /&gt;
  &amp;quot;D&amp;quot;:     (t.getDate()),&lt;br /&gt;
  &amp;quot;ddd&amp;quot;: [&amp;quot;Sun&amp;quot;,&amp;quot;Mon&amp;quot;,&amp;quot;Tue&amp;quot;,&amp;quot;Wed&amp;quot;,&amp;quot;Thu&amp;quot;,&amp;quot;Fri&amp;quot;,&amp;quot;Sat&amp;quot;][t.getDay()],&lt;br /&gt;
  &amp;quot;d&amp;quot;:   [&amp;quot;日&amp;quot;,&amp;quot;月&amp;quot;,&amp;quot;火&amp;quot;,&amp;quot;水&amp;quot;,&amp;quot;木&amp;quot;,&amp;quot;金&amp;quot;,&amp;quot;土&amp;quot;][t.getDay()],&lt;br /&gt;
  &amp;quot;hh&amp;quot;: pad(t.getHours()),&lt;br /&gt;
  &amp;quot;h&amp;quot;:     (t.getHours()),&lt;br /&gt;
  &amp;quot;HH&amp;quot;: pad(t.getHours()%12),&lt;br /&gt;
  &amp;quot;H&amp;quot;:     (t.getHours()%12),&lt;br /&gt;
  &amp;quot;mm&amp;quot;: pad(t.getMinutes()),&lt;br /&gt;
  &amp;quot;m&amp;quot;:     (t.getMinutes()),&lt;br /&gt;
  &amp;quot;ss&amp;quot;: pad(t.getSeconds()),&lt;br /&gt;
  &amp;quot;s&amp;quot;:     (t.getSeconds()),&lt;br /&gt;
  &amp;quot;ampm&amp;quot;:  (t.getHours() &amp;lt; 12 ? &amp;quot;午前&amp;quot; : &amp;quot;午後&amp;quot;)&lt;br /&gt;
  };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
var result = format.replace(/(&#039;)(.*?)\1|ampm|([YMDdHhms])\3*/g,&lt;br /&gt;
  function($0,esc,ltr){return ltr || esc || symbol[$0] || $0;}&lt;br /&gt;
);&lt;br /&gt;
Document.Write(result);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5414</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5414"/>
		<updated>2020-10-15T21:22:00Z</updated>

		<summary type="html">&lt;p&gt;Isari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「Macros」フォルダ等に保存し、マクロメニューの「選択」や「カスタマイズ」から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/haijinboys/mery-macro-emmet Emmet] (Kuro)&lt;br /&gt;
*[[Zen Coding]] (Kuro)&lt;br /&gt;
*[[CSV のカーソル位置の列を削除]] (Kuro)&lt;br /&gt;
*[[対応する括弧に移動]] (Kuro, kurama, masme 他) update 2019/04/24&lt;br /&gt;
*[[選択文字列を強調]] (Kuro)&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2020/05/22&lt;br /&gt;
*[[行頭か行末 または 選択範囲の始点か終点]] (sukemaru) last update 2020/06/26&lt;br /&gt;
*[[文書の先頭か末尾]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[バイト数]] (Kuro, ks)&lt;br /&gt;
*[[日付と時刻を挿入]] (n, masme, sukemaru) update 2018/12/09&lt;br /&gt;
*[[日付と時刻を挿入（カレンダー版）]] (papagoat) update 2016/05/24&lt;br /&gt;
*[[選択範囲を上下に移動]] (ks)&lt;br /&gt;
*[[行を上下に移動（Mery 2.7 用）]]　(sukemaru) 2019/05/07&lt;br /&gt;
*[[行を複製 (複数行可)]] (sukemaru) last update 2020/06/26&lt;br /&gt;
*[[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[Vz 風テキストスタック 2 ストロークキー]] (papagoat) update 2013/11/22&lt;br /&gt;
*[[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
*[[ラクラク罫線]] (手石) Update 2012/12/22&lt;br /&gt;
*[[ファイル:XHTML.zip]] (アラフォー親父) HTMLタグを、ショートカット・キーに登録して入力するマクロ（文章挟み込み仕様）&lt;br /&gt;
*[[矩形ペースト]] (手石)&lt;br /&gt;
*[[自動箇条書き]] (手石) update 2013/03/15&lt;br /&gt;
*[[インデントを考慮した折り返し（改行挿入）]] (手石) update 2013/02/23&lt;br /&gt;
*[[青空文庫用整形補助]] (ks, 有志)&lt;br /&gt;
*[[部分編集]] (ks)&lt;br /&gt;
*[[文字カウント]] (masme) 2014/02/01, update 2020/05/17&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント)  (masme) 2014/02/09, update 2019/06/01&lt;br /&gt;
:[[字下げ・字上げ#sukemaru 版|スペース×２ 追加・削除]]、[[字下げ・字上げ#インデント|インデント・逆インデント]] (sukemaru) last update 2020/06/29&lt;br /&gt;
*[[数値を増減]](インクリメント・デクリメント) (masme) 2014/06/17, update 2020/05/17&lt;br /&gt;
*[[少し便利な Undo/Redo]] (ks)&lt;br /&gt;
*[[自動ルビ振り]] (急急如律令)&lt;br /&gt;
*[[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko, sukemaru) update 2018/11/14&lt;br /&gt;
*[[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
*[[矩形選択範囲の各行先頭に文字挿入]] (yuko)&lt;br /&gt;
*[[行の先頭に貼り付け]] (sukemaru) 2018/08/24&lt;br /&gt;
*[[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
*[[アウトライン用ノード追加]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを上げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを下げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードの完了/未完了を切り替える]] (mik) 2018/10/18 update&lt;br /&gt;
*[[ハルナアウトライン用の完了/未完了フラグをノード名に反映する]] (mik) 2018/10/18 update&lt;br /&gt;
*[[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist, yuko) 2020/09/04 update&lt;br /&gt;
*[[Markdown 向け、リスト記号 (*) のトグル]] (yuko) 2019/04/29&lt;br /&gt;
*[[Markdown 向け、タスクリスト (* ［］) のチェック状態をトグル]] (yuko) 2020/09/04&lt;br /&gt;
*[[引用符／コメント]] ※ポップアップメニュー (sukemaru) last update 2020/06/23&lt;br /&gt;
*[[カッコで囲う]] ※ポップアップメニュー (sukemaru) last update 2020/06/23 &amp;lt;br&amp;gt; [[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (簡易版)]] ＆ [[カッコで囲う#引用符を追加／削除|引用符を追加／削除]] &amp;lt;br&amp;gt; [[カッコで囲う#カッコで囲う２（各行ごとにカッコで囲う／Mery ver 3 用）|カッコで囲う２]] ※ポップアップメニュー &lt;br /&gt;
*[[カッコをはずす]] ＆ [[カッコをはずす#カッコを追加／削除|カッコを追加／削除]] (sukemaru) last update 2020/06/28&lt;br /&gt;
*[[定型文を挿入]]マクロ集 (sukemaru) 2018/12/03&lt;br /&gt;
*[[何年生で習う漢字？]] (シリル) 2019/03/10&lt;br /&gt;
*[[上に行挿入]] (yuko) 2019/05/11&lt;br /&gt;
*[[位置情報を保存してから「すべて選択／選択解除」(非スクロール)]] (sukemaru) update 2019/11/13 &amp;lt;br&amp;gt; [[位置情報を保存してから「すべて選択／選択解除」(非スクロール)#【include 版】位置を復帰／保存|位置を復帰／保存]]&lt;br /&gt;
*[[選択範囲を広げる]] (yuko) 2020/03/22&lt;br /&gt;
*[[拡張自動選択]] (sukemaru) update 2020/07/01&lt;br /&gt;
*[[追加コピー・追加切り取り]] (sukemaru) 2020/06/05&lt;br /&gt;
*[[新規行番号入力]] (Takuma 他) 2020/06/17 - 2020/06/26&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[ファイルのプロパティ]] (sukemaru) 2018/12/18&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
*[[選択範囲のURL・パスを開く]]（ひらけゴマ！）(sukemaru) update 2019/04/07&lt;br /&gt;
*[[自動バックアップ]] (ks)&lt;br /&gt;
*[[終了時状態保持・復元]] (ks)&lt;br /&gt;
*[[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
*[[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
*[[パスを取得]] (Kuro)&lt;br /&gt;
*[[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
*[[ファイルを比較]] (Kuro)&lt;br /&gt;
*[[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
*[[ブックマーク一覧ジャンプ]] ※ポップアップメニュー (goat, sukemaru) last update 2020/06/24&lt;br /&gt;
*[[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
*[[フォルダを開く]] (n)&lt;br /&gt;
*[[コマンドプロンプトを開く]] (n)&lt;br /&gt;
*[[SDIウィンドウの記憶と復帰]] (papagoat) Update 2012/10/23 (説明文変更 2013/11/22)&lt;br /&gt;
*[[よく使うフォルダ]] (手石) Update 2014/02/22&lt;br /&gt;
*[[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
*[[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
*[[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
*[[タグジャンプ]] (o)&lt;br /&gt;
*[[ウィンドウの位置とサイズを拡張子で指定]] (papagoat) Update 2014/04/17&lt;br /&gt;
*[[編集モードの自動選択]] または 「書き換え禁止で開く」 ※イベントマクロ (sukemaru, Bleat) update 2019/04/24&lt;br /&gt;
*[[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
*[[特定のフォルダで「ファイルを開く」ダイアログ]] (sukemaru) update 2020/05/10&lt;br /&gt;
*[[すべて閉じる]]マクロ集 (sukemaru) update 2019/05/03&lt;br /&gt;
*[[文書が変更されていなければ変更マークを消す]] (Noah)&lt;br /&gt;
*[[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
*[[ファイルを読み直す・開きなおす]] ※ポップアップメニュー (sukemaru) last update 2019/11/30&lt;br /&gt;
*[[さいごに閉じたファイルを開く]] ※ポップアップメニュー (sukemaru) 2019/11/30&lt;br /&gt;
*[[タブを複製する]] (sukemaru) update 2020/06/22&lt;br /&gt;
*[[強制的に上書き保存]] (sukemaru) 2020/06/01&lt;br /&gt;
*[[すべて戻す]] (sukemaru) 2020/06/01&lt;br /&gt;
*[[作業フォルダの変更]] (sukemaru) 2020/06/03&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
&lt;br /&gt;
*[[可変長を固定長に変換]] (Kuro)&lt;br /&gt;
*[[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
*[[標準変換]] (Kuro)&lt;br /&gt;
*[[連続する重複行を削除]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え]] (Kuro)&lt;br /&gt;
*[[降順で並び替え]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え／降順で並び替え]] (sukemaru) last update 2020/05/04&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2019/12/21&lt;br /&gt;
*[[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
*[[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
*[[連番の挿入]] (手石)&lt;br /&gt;
*[[TSV(CSV) ⇒ 固定長]] (手石) update 2013/04/16&lt;br /&gt;
*[[行並べ替え]] (masme) 2013/08/25, update 2020/05/20&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25, update 2020/05/17&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&lt;br /&gt;
*[[TrueとFalse_を切り替える]]（&amp;lt;span style=&amp;quot;color:#0000c0;&amp;quot;&amp;gt;YES&amp;lt;/span&amp;gt;／&amp;lt;span style=&amp;quot;color:#c00;&amp;quot;&amp;gt;NO&amp;lt;/span&amp;gt;マクロ） (sukemaru) last update 2020/07/01&lt;br /&gt;
*[[基数変換10_16]] (シリル) 2019/02/10&lt;br /&gt;
*[[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
*[[罫線変換]] (シリル) 2019/03/09&lt;br /&gt;
*[[全角／半角変換]] (sukemaru) fixed 2019/05/11&lt;br /&gt;
*[[全角／半角 トグル変換]] (sukemaru) last update 2020/07/03&lt;br /&gt;
*[[大文字／小文字／頭文字 トグル変換]] (sukemaru) last update 2020/07/03&lt;br /&gt;
*[[ひらがな／カタカナ変換]] (sukemaru) last update 2020/07/08&lt;br /&gt;
*[[TAB／半角空白 トグル変換]] (sukemaru) last update 2020/07/02&lt;br /&gt;
*[[文字列の順番を逆に書き出す]] (sukemaru) update 2020/01/03&lt;br /&gt;
*[[マルチカーソル選択範囲の並べ替え]] (sukemaru) last update 2020/07/06&lt;br /&gt;
*[[マルチカーソル用:「昇順／降順」または「逆順」で並べ替え]] (sukemaru) 2020/07/08&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
&lt;br /&gt;
*[[文書から検索]] (Kuro)&lt;br /&gt;
*[[単語を抽出]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチしない行)]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチする行)]] (Kuro)&lt;br /&gt;
*[[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
*[[ポップアップメニューで検索先にジャンプ]] (手石, sukemaru) Last Update 2020/06/25&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2019/06/01&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)→[[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
*[https://github.com/GunseiPaseri/Mery_macro 文字出現量ランキング] (群生系パセリ) 2015/12/28&lt;br /&gt;
*[[検索ヒット数表示]] (ks)&lt;br /&gt;
*[[検索ヒット数表示（選択文字列）]] ※イベントマクロ　(sukemaru) last update 2019/12/03&lt;br /&gt;
*[[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
*[[任意の検索エンジンで検索ー改良版]] (Takeshi) 2019/07/12&lt;br /&gt;
*[[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
*[[簡易検索一覧]] (シリル) 2018/12/24&lt;br /&gt;
*[[簡易検索一覧などをアウトプット]] (シリル) 2018/12/31&lt;br /&gt;
*[[複数置換]] (Noah)&lt;br /&gt;
*[[類義語アウトプット【Python】]] (シリル) 2019/03/24&lt;br /&gt;
*[[校正支援アウトプット]] (シリル) 2019/05/01&lt;br /&gt;
*[[次／前の文字列を検索・改]] (sukemaru) last update 2020/05/12&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[Eclipse風コメントアウト(改)]] (pizz) 2020/03/15&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme, sukemaru) last update 2020/06/28&lt;br /&gt;
*[[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
*[[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
*[[タグファイルから補完]] (n)&lt;br /&gt;
*[[コードスニペットもどき]] (手石) Update 2012/12/20&lt;br /&gt;
*[[TeX文書のコンパイル]] (手石, isari) update 2020/10/16&lt;br /&gt;
*[[TeX数式のチェック]] (手石)&lt;br /&gt;
*[[簡易数式計算]] (ks)&lt;br /&gt;
*[[定義へ移動]] (ks)&lt;br /&gt;
*[[タブの桁数]] (手石)&lt;br /&gt;
*[[行末の空白を削除]] (n) 2014/12/19&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを実行(掲載時点ではバッチファイル・Javascript・Lua・PHP・Perl・Python・Ruby・UWSCに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを構文チェック(掲載時点ではPHP・Perlに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[[説明を出力]] (s) Create 2015/08/16&lt;br /&gt;
*[[拡張子からコンソール実行]] (YOS G-spec) 2019/6/22更新&lt;br /&gt;
*[[JSON整形]](Ovis) Create 2019/03/25&lt;br /&gt;
*[[JS フォーマット]]（JavaScript整形） (sukemaru) 2020/05/03&lt;br /&gt;
*[[ScriptRun]]（Scriptコードの実行）（fuka）2020/08/02&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
*[[テキストブラウザ]] (Kuro)&lt;br /&gt;
*[[Yahoo!天気情報]] (Kuro, sukemaru) last update 2020/05/11&lt;br /&gt;
*[[メール送信]] (ks)&lt;br /&gt;
*[[あつまれ☆みんなのおもしろアイコン]] (有志)&lt;br /&gt;
&lt;br /&gt;
== 実験的マクロ・練習マクロなど ==&lt;br /&gt;
:[[実験的マクロ・練習マクロなど|&amp;gt;&amp;gt;　別ページ]]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[HSPキーワード検索]] (SSSE) 2019/08/29&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&lt;br /&gt;
*[[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
*[[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
*[[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
*[[JavaScript を実行]] (n)&lt;br /&gt;
*[[Ruby を実行]] (n)&lt;br /&gt;
*[[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
*[[マクロ・関数をメニューで呼び出す]] (aliquis) 2013/08/19&lt;br /&gt;
*[[階層化マクロメニュー]] (ks)&lt;br /&gt;
*[[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
*[[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
*[[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
*[[Editor.OpenFile()のポリフィル]](kazy)&lt;br /&gt;
*[[折り返しトグル切り替え]] (Bleat, sukemaru) update 2020/03/15&lt;br /&gt;
*[[ファイルロック (排他制御) 的なもの]] (PebblePot)&lt;br /&gt;
*[[Mery.iniのオプション値を取得]] ※組み込み関数 (sukemaru) last update 2020/05/14&lt;br /&gt;
*[[Mery本体のバージョンチェック]] ※組み込み関数 (sukemaru) 2019/04/17&lt;br /&gt;
*[[IO.Serialize() の JSON を参照する]] ※組み込み関数 (sukemaru) 2019/04/17&lt;br /&gt;
*[[ポップアップメニューを「n*十件ずつ」のサブメニューに自動分割する]] ※組み込み関数 (sukemaru) update 2020/05/28&lt;br /&gt;
*[[アクティブなタブのマクロを実行する]] (sukemaru) last update 2020/04/30&lt;br /&gt;
*[[「クリップボード履歴」メニューのマクロ化]] ＋ [[プラグイン:スニペットプラグイン|スニペット機能]]　(sukemaru) last update 2020/06/27&lt;br /&gt;
*[[コンパクトメニュー]] (sukemaru) last update 2020/03/29&lt;br /&gt;
*[[マクロメニュー]] (sukemaru) last update 2020/06/03&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, sukemaru, 有志) last update 2020/05/22&lt;br /&gt;
*[[マテリアルデザインっぽいアイコンと『小マクロ集』]](sukemaru) last update 2020/01/04&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[GetKeyState.exe(キー状態取得実行ファイル)]] (pizz) 2019/03/23&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks, 有志) Last Update 2019/09/08&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=TeX%E6%96%87%E6%9B%B8%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB&amp;diff=5413</id>
		<title>TeX文書のコンパイル</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=TeX%E6%96%87%E6%9B%B8%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB&amp;diff=5413"/>
		<updated>2020-10-15T21:19:41Z</updated>

		<summary type="html">&lt;p&gt;Isari: isari版を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 手石 版 =&lt;br /&gt;
&lt;br /&gt;
編集中のTeX文書を保存してコンパイルし、pdfで表示します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// タイプセット.js&lt;br /&gt;
// 2013/10/21&lt;br /&gt;
// platex と dvipdfmx はパスが通っている必要があります。&lt;br /&gt;
&lt;br /&gt;
// 拡張子のチェック&lt;br /&gt;
var sary = document.Name.split( &amp;quot;.&amp;quot; );&lt;br /&gt;
if ( ( sary.length &amp;lt;= 1 ) || ( sary.pop() != &amp;quot;tex&amp;quot; ) ){ Alert( &amp;quot;.texではありません。&amp;quot; ); Quit(); }&lt;br /&gt;
&lt;br /&gt;
document.Save();&lt;br /&gt;
var pathdoc = document.FullName;&lt;br /&gt;
var jobname = changeExt( document.Name, &amp;quot;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
// 最後にｐｄｆファイルを開くタイミングを当該ファイルの有無で判断しているので、&lt;br /&gt;
// 古いｐｄｆファイルは削除する。ついでにその他のファイルも……。&lt;br /&gt;
var SFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
var ary = new Array( &amp;quot;pdf&amp;quot;, &amp;quot;aux&amp;quot;, &amp;quot;dvi&amp;quot;, &amp;quot;log&amp;quot;, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
for ( var i in ary ){&lt;br /&gt;
    var file_delete = changeExt( pathdoc, ary[ i ] );&lt;br /&gt;
    if ( SFso.FileExists( file_delete ) ){ SFso.DeleteFile( file_delete ) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
menu.Add( &amp;quot;Ａ４縦置き&amp;quot;, 41, meMenuChecked );&lt;br /&gt;
menu.Add( &amp;quot;Ａ４横置き&amp;quot;, 42, 0 );&lt;br /&gt;
menu.Add( &amp;quot;区切り&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
menu.Add( &amp;quot;Ｂ５縦置き&amp;quot;, 51, 0 );&lt;br /&gt;
menu.Add( &amp;quot;Ｂ５横置き&amp;quot;, 52, 0 );&lt;br /&gt;
menu.Add( &amp;quot;区切り&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
menu.Add( &amp;quot;キャンセル&amp;quot;, 99, 0 );&lt;br /&gt;
//var r = menu.Track( mePosMouse )&lt;br /&gt;
var r = menu.Track( 0 );&lt;br /&gt;
var op_p = &amp;quot;&amp;quot;;&lt;br /&gt;
var op_l = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
switch ( r ){&lt;br /&gt;
case 41:&lt;br /&gt;
    break;&lt;br /&gt;
case 42:&lt;br /&gt;
    op_l = &amp;quot; -l&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 51:&lt;br /&gt;
    op_p = &amp;quot; -p b5&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 52:&lt;br /&gt;
    op_l = &amp;quot; -l&amp;quot;;&lt;br /&gt;
    op_p = &amp;quot; -p b5&amp;quot;;&lt;br /&gt;
    break;&lt;br /&gt;
case 99:&lt;br /&gt;
    Quit();&lt;br /&gt;
default:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var stdout_log = changeExt( pathdoc, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
var cmd_cd = &#039;cmd /c cd /d &amp;quot;&#039; + document.Path + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_p  = &#039;platex -jobname=&amp;quot;&#039; + jobname + &#039;&amp;quot; &amp;quot;&#039; + pathdoc + &#039;&amp;quot; &amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot; 2&amp;gt;&amp;amp;1&#039;;&lt;br /&gt;
var cmd_d  = &#039;dvipdfmx -v&#039; + op_l + op_p + &#039; &amp;quot;&#039; + changeExt( pathdoc, &amp;quot;&amp;quot; ) + &#039;&amp;quot; &amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot; 2&amp;gt;&amp;amp;1&#039;;&lt;br /&gt;
var cmd_echo1 = &#039;echo.&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo2 = &#039;echo.&amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo1line = &#039;echo ----------&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
var cmd_echo2line = &#039;echo ----------&amp;gt;&amp;gt;&amp;quot;&#039; + stdout_log + &#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
var cmd_ary = [&lt;br /&gt;
    cmd_cd&lt;br /&gt;
    , cmd_echo1line&lt;br /&gt;
    , cmd_p&lt;br /&gt;
    , cmd_echo2, cmd_echo2, cmd_echo2line&lt;br /&gt;
    , cmd_d&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
var windowStyle = { HIDE: 0, NORMALFOCUS: 1 };&lt;br /&gt;
// 処理が終わるまで次へ進まないようブロック（第３引数を”true”）。&lt;br /&gt;
WshShell.Run( cmd_ary.join( &amp;quot; &amp;amp; &amp;quot; ), windowStyle.NORMALFOCUS, true );&lt;br /&gt;
&lt;br /&gt;
// pdfファイルを関連付けで開く。&lt;br /&gt;
var pathpdf = changeExt( pathdoc, &amp;quot;pdf&amp;quot; );&lt;br /&gt;
var trymax = 3;&lt;br /&gt;
for ( var  tryCount = 0; tryCount &amp;lt; trymax; tryCount++){&lt;br /&gt;
    if ( SFso.FileExists( pathpdf ) ){&lt;br /&gt;
        WshShell.Run( &#039;cmd /c &amp;quot;&#039; + pathpdf + &#039;&amp;quot;&#039;, windowStyle.NORMALFOCUS, false );&lt;br /&gt;
        break;&lt;br /&gt;
    }else{&lt;br /&gt;
        Sleep( 500 );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( tryCount &amp;gt;= trymax ){&lt;br /&gt;
    Alert( &amp;quot;pdfファイルが見つかりませんでした。&amp;quot; );&lt;br /&gt;
    openFile( stdout_log );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
SFso = null;&lt;br /&gt;
WshShell = null;&lt;br /&gt;
&lt;br /&gt;
function openFile( fullname ){&lt;br /&gt;
    var i = fileIndex( fullname );&lt;br /&gt;
    if ( i == -1 ){&lt;br /&gt;
        if ( fileExists( fullname ) ){&lt;br /&gt;
            Editor.NewFile();&lt;br /&gt;
            Editor.OpenFile( fullname );&lt;br /&gt;
        }else{&lt;br /&gt;
            Alert( &amp;quot;.TMPがみつかりません！&amp;quot; );&lt;br /&gt;
            return -1;&lt;br /&gt;
        }&lt;br /&gt;
    }else{&lt;br /&gt;
        Editor.Documents.Item( i ).Activate();&lt;br /&gt;
    }&lt;br /&gt;
    return i;&lt;br /&gt;
&lt;br /&gt;
    function fileIndex( fullname ){ &lt;br /&gt;
        for ( var i = Editor.Documents.Count-1; i&amp;gt;=0; i-- ){ &lt;br /&gt;
            if ( Editor.Documents.Item( i ).FullName == fullname ){ return i }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function fileExists( filename ){&lt;br /&gt;
    var objFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
    var result = objFso.FileExists( filename );&lt;br /&gt;
    objFso = null;&lt;br /&gt;
    return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function changeExt( filename, ext ){&lt;br /&gt;
    var s = filename.split( &amp;quot;\\&amp;quot; );&lt;br /&gt;
    var f = s.pop().split( &amp;quot;.&amp;quot; );&lt;br /&gt;
    if ( f.length &amp;gt;= 2 ){&lt;br /&gt;
        f.pop();&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }else{&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }&lt;br /&gt;
    s.push( f.join( &amp;quot;.&amp;quot; ) );&lt;br /&gt;
    return s.join( &amp;quot;\\&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= isari 版 (2020/10) =&lt;br /&gt;
&lt;br /&gt;
手石さんの版を元に、TeX処理系と受け入れる拡張子、PDF表示ソフトをカスタムできるようにしました。オプションの値を変更してお好みの設定にしてください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// タイプセット改.js&lt;br /&gt;
// 2020/10/16&lt;br /&gt;
&lt;br /&gt;
// ------------ オプション ------------&lt;br /&gt;
// 受け入れる拡張子&lt;br /&gt;
var exts = [ &amp;quot;tex&amp;quot;, &amp;quot;bib&amp;quot;, &amp;quot;txt&amp;quot; ];&lt;br /&gt;
&lt;br /&gt;
// TeX処理系&lt;br /&gt;
// キーをポップアップメニューに表示したい文字列、値をシェルに渡す文字列として適宜追加・編集してください。各処理系にはパスが通っている必要があります。&lt;br /&gt;
var engines = { &amp;quot;pLaTeX&amp;quot;: &amp;quot;ptex2pdf -l -ot -kanji=utf8&amp;quot;, &amp;quot;upLaTeX&amp;quot;: &amp;quot;ptex2pdf -u -l -ot&amp;quot;, &amp;quot;LuaLaTeX&amp;quot;: &amp;quot;lualatex&amp;quot;, &amp;quot;XeLaTeX&amp;quot;: &amp;quot;xelatex&amp;quot; };&lt;br /&gt;
&lt;br /&gt;
// syncTeXオプション&lt;br /&gt;
var synctex = &amp;quot;-synctex=1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// シェルの表示オプション&lt;br /&gt;
// 1にするとシェルのウィンドウが立ち上がり出力を表示、0にすると非表示になります。他にも10までの整数が指定できます。詳細は[https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364421(v=msdn.10) WSHのドキュメント]を参照してください。&lt;br /&gt;
var windowStyle = 1&lt;br /&gt;
&lt;br /&gt;
// PDFビューワー&lt;br /&gt;
// 実行ファイルの場所をフルパス、バックスラッシュ2つ区切りで指定してください。必ず外側をシングル、内側をダブルのクオーテーションで囲みます。nullにすると規定のプログラムで開きます。&lt;br /&gt;
var pdfViewer = &#039;&amp;quot;C:\\Program Files\\SumatraPDF\\SumatraPDF.exe&amp;quot;&#039;;&lt;br /&gt;
// ------------------------------------&lt;br /&gt;
&lt;br /&gt;
// 拡張子のチェック&lt;br /&gt;
var sary = document.Name.split( &amp;quot;.&amp;quot; );&lt;br /&gt;
if ( ( sary.length &amp;lt;= 1 ) || ( exts.indexOf( sary.pop() ) == -1 ) ){&lt;br /&gt;
    Alert( &amp;quot;TeX文書ではありません。&amp;quot; );&lt;br /&gt;
    Quit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.Save();&lt;br /&gt;
var filename = document.Name;&lt;br /&gt;
var path = document.Path;&lt;br /&gt;
var filepath = document.FullName;&lt;br /&gt;
&lt;br /&gt;
// 古いpdfファイルと補助ファイルの削除&lt;br /&gt;
var SFso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
var ary = new Array( &amp;quot;pdf&amp;quot;, &amp;quot;aux&amp;quot;, &amp;quot;dvi&amp;quot;, &amp;quot;log&amp;quot;, &amp;quot;TMP&amp;quot; );&lt;br /&gt;
for ( var i in ary ){&lt;br /&gt;
    var file_delete = changeExt( filepath, ary[ i ] );&lt;br /&gt;
    if ( SFso.FileExists( file_delete ) ){ SFso.DeleteFile( file_delete ) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
var keys = Object.keys( engines );&lt;br /&gt;
keys.forEach( function( key, index ) {&lt;br /&gt;
    menu.Add( key, index );&lt;br /&gt;
} );&lt;br /&gt;
menu.Add( &amp;quot;キャンセル&amp;quot;, 99 );&lt;br /&gt;
// マウスポインタの位置にポップアップを表示したければTrack( mePosMouse )に&lt;br /&gt;
var r = menu.Track( 0 );&lt;br /&gt;
var key = &amp;quot;&amp;quot;, engine = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if ( r &amp;lt;= keys.length ){&lt;br /&gt;
    key = keys[r];&lt;br /&gt;
    engine = engines[key];&lt;br /&gt;
}else if ( r == 99 ){&lt;br /&gt;
    Quit();&lt;br /&gt;
}else{&lt;br /&gt;
    Alert( &amp;quot;指定が正しくありません。&amp;quot; );&lt;br /&gt;
    Quit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var typeset = engine + &amp;quot; &amp;quot; + synctex + &amp;quot; &amp;quot; + filename;&lt;br /&gt;
&lt;br /&gt;
var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
WshShell.CurrentDirectory = path;&lt;br /&gt;
WshShell.Run( typeset, windowStyle, true );&lt;br /&gt;
&lt;br /&gt;
// pdfファイルを開く&lt;br /&gt;
var pdfpath = changeExt( filepath, &amp;quot;pdf&amp;quot; );&lt;br /&gt;
var openpdf = pdfViewer ? pdfViewer + &amp;quot; &amp;quot; + pdfpath : pdfpath;&lt;br /&gt;
var trymax = 3;&lt;br /&gt;
for ( var  tryCount = 0; tryCount &amp;lt; trymax; tryCount++){&lt;br /&gt;
    if ( SFso.FileExists( pdfpath ) ){&lt;br /&gt;
        WshShell.Run( openpdf );&lt;br /&gt;
        break;&lt;br /&gt;
    }else{&lt;br /&gt;
        Sleep( 500 );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( tryCount &amp;gt;= trymax ){&lt;br /&gt;
    Alert( &amp;quot;pdfファイルが見つかりませんでした。&amp;quot; );&lt;br /&gt;
    var log = changeExt( filepath, &amp;quot;log&amp;quot; );&lt;br /&gt;
    if ( SFso.FileExists( log ) ){&lt;br /&gt;
    editor.OpenFile( log, meOpenAllowNewWindow );&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
SFso = null;&lt;br /&gt;
WshShell = null;&lt;br /&gt;
&lt;br /&gt;
function changeExt( filename, ext ){&lt;br /&gt;
    var s = filename.split( &amp;quot;\\&amp;quot; );&lt;br /&gt;
    var f = s.pop().split( &amp;quot;.&amp;quot; );&lt;br /&gt;
    if ( f.length &amp;gt;= 2 ){&lt;br /&gt;
        f.pop();&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }else{&lt;br /&gt;
        if ( ext.length &amp;gt; 0 ){ f.push( ext ) }&lt;br /&gt;
    }&lt;br /&gt;
    s.push( f.join( &amp;quot;.&amp;quot; ) );&lt;br /&gt;
    return s.join( &amp;quot;\\&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5135</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5135"/>
		<updated>2020-05-31T15:24:10Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* テキスト操作補助 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「Macros」フォルダ等に保存し、マクロメニューの「選択」や「カスタマイズ」から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/haijinboys/mery-macro-emmet Emmet] (Kuro)&lt;br /&gt;
*[[Zen Coding]] (Kuro)&lt;br /&gt;
*[[CSV のカーソル位置の列を削除]] (Kuro)&lt;br /&gt;
*[[対応する括弧に移動]] (Kuro, kurama, masme 他) update 2019/04/24 （追加コード 2019/12/05）&lt;br /&gt;
*[[選択文字列を強調]] (Kuro)&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2020/05/22&lt;br /&gt;
*[[行頭か行末 または 選択範囲の始点か終点|行頭か行末 または 選択範囲の始点か終点 に移動]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[文書の先頭か末尾|文書の 先頭か末尾 に移動]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[バイト数]] (Kuro, ks)&lt;br /&gt;
*[[日付と時刻を挿入]] (n, masme, sukemaru) update 2018/12/09&lt;br /&gt;
*[[日付と時刻を挿入（カレンダー版）]] (papagoat) update 2016/05/24&lt;br /&gt;
*[[選択範囲を上下に移動]] (ks)&lt;br /&gt;
*[[行を上下に移動（Mery 2.7 用）]]　(sukemaru) 2019/05/07　※Mery 2.7 以降用（ブックマークを保持）&lt;br /&gt;
*[[行を複製 (複数行可)]] (sukemaru) update 2019/05/07&lt;br /&gt;
*[[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[Vz 風テキストスタック 2 ストロークキー]] (papagoat) update 2013/11/22&lt;br /&gt;
*[[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
*[[ラクラク罫線]] (手石) Update 2012/12/22&lt;br /&gt;
*[[ファイル:XHTML.zip]] (アラフォー親父) HTMLタグを、ショートカット・キーに登録して入力するマクロ（文章挟み込み仕様）&lt;br /&gt;
*[[矩形ペースト]] (手石)&lt;br /&gt;
*[[自動箇条書き]] (手石) update 2013/03/15&lt;br /&gt;
*[[インデントを考慮した折り返し（改行挿入）]] (手石) update 2013/02/23&lt;br /&gt;
*[[青空文庫用整形補助]] (ks, 有志)&lt;br /&gt;
*[[部分編集]] (ks)&lt;br /&gt;
*[[文字カウント]] (masme) 2014/02/01, update 2020/05/17&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント)  (masme) 2014/02/09, update 2019/06/01&lt;br /&gt;
:[[字下げ・字上げ#sukemaru 版|スペース×２ 追加・削除]]、[[字下げ・字上げ#インデント|インデント・逆インデント]] (sukemaru) last update 2019/12/01　※Mery 2.8.6 以上でブックマークを保持&lt;br /&gt;
*[[数値を増減]](インクリメント・デクリメント) (masme) 2014/06/17, update 2020/05/17&lt;br /&gt;
*[[少し便利な Undo/Redo]] (ks)&lt;br /&gt;
*[[自動ルビ振り]] (急急如律令)&lt;br /&gt;
*[[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko, sukemaru) update 2018/11/14&lt;br /&gt;
*[[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
*[[矩形選択範囲の各行先頭に文字挿入]] (yuko)&lt;br /&gt;
*[[行の先頭に貼り付け]] (sukemaru) 2018/08/24&lt;br /&gt;
*[[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
*[[アウトライン用ノード追加]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを上げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを下げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードの完了/未完了を切り替える]] (mik) 2018/10/18 update&lt;br /&gt;
*[[ハルナアウトライン用の完了/未完了フラグをノード名に反映する]] (mik) 2018/10/18 update&lt;br /&gt;
*[[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist, yuko) 2018/10/15 update&lt;br /&gt;
*[[Markdown 向け、リスト記号 (*) のトグル]] (yuko) 2019/04/29&lt;br /&gt;
*[[引用符／コメント]] ※ポップアップメニュー (行頭の文字列操作. 「引用の追加」マクロの増補改訂版)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
*[[カッコで囲う]] (ポップアップメニューあり)　(sukemaru) last modified 2020.05.22&lt;br /&gt;
:「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (簡易版 ポップアップメニューなし)]]」&amp;lt;br&amp;gt; 「[[カッコで囲う#引用符を追加／削除|引用符を追加／削除]]」（ &amp;quot;二重引用符&amp;quot; の追加／削除トグル）&lt;br /&gt;
*[[カッコをはずす]] ＆ [[カッコをはずす#カッコを削除／追加|カッコを削除／追加]] ＆ [[カッコをはずす#カッコを追加／削除|カッコを追加／削除]] (sukemaru) fixed 2019/05/03&lt;br /&gt;
*[[定型文を挿入]]マクロ集 (sukemaru) 2018/12/03&lt;br /&gt;
*[[何年生で習う漢字？]] (シリル) 2019/03/10&lt;br /&gt;
*[[上に行挿入]] (yuko) 2019/05/11&lt;br /&gt;
*[[位置情報を保存してから「すべて選択／選択解除」(非スクロール)]] (sukemaru)&lt;br /&gt;
: update 2019/11/13： 「[[位置情報を保存してから「すべて選択／選択解除」(非スクロール)#【include 版】位置を復帰／保存|位置を復帰／保存]]」を追加&lt;br /&gt;
*[[選択範囲を広げる]] (yuko) 2020/03/22&lt;br /&gt;
*[[拡張自動選択]] (sukemaru) 2020/05/31 ※「日付」を範囲選択、今日の日付に変換&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[ファイルのプロパティ]] (sukemaru) 2018/12/18&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
*[[選択範囲のURL・パスを開く|ひらけゴマ！]] ※「選択範囲のURL・パスを開く」 (sukemaru) update 2019/04/07&lt;br /&gt;
*[[自動バックアップ]] (ks)&lt;br /&gt;
*[[終了時状態保持・復元]] (ks)&lt;br /&gt;
*[[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
*[[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
*[[パスを取得]] (Kuro)&lt;br /&gt;
*[[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
*[[ファイルを比較]] (Kuro)&lt;br /&gt;
*[[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
*[[ブックマーク一覧ジャンプ]] ※ポップアップメニュー (goat, sukemaru) update 2019/12/05&lt;br /&gt;
*[[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
*[[フォルダを開く]] (n)&lt;br /&gt;
*[[コマンドプロンプトを開く]] (n)&lt;br /&gt;
*[[SDIウィンドウの記憶と復帰]] (papagoat) Update 2012/10/23 (説明文変更 2013/11/22)&lt;br /&gt;
*[[よく使うフォルダ]] (手石) Update 2014/02/22&lt;br /&gt;
*[[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
*[[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
*[[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
*[[タグジャンプ]] (o)&lt;br /&gt;
*[[ウィンドウの位置とサイズを拡張子で指定]] (papagoat) Update 2014/04/17&lt;br /&gt;
*[[編集モードの自動選択]] または 「書き換え禁止で開く」 ※イベントマクロ (sukemaru, Bleat) update 2019/04/24&lt;br /&gt;
*[[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
*[[特定のフォルダで「ファイルを開く」ダイアログ]] (sukemaru) update 2020/05/10&lt;br /&gt;
*[[すべて閉じる]]マクロ集 (sukemaru) update 2019/05/03 &amp;lt;br&amp;gt;｢他（右側／左側）のタブを閉じる｣ などを追加&lt;br /&gt;
*[[文書が変更されていなければ変更マークを消す]] (Noah)&lt;br /&gt;
*[[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
*[[ファイルを読み直す・開きなおす]] ※ポップアップメニュー (sukemaru) last update 2019/11/30 &amp;lt;br&amp;gt; エンコード指定で読み直し・読み取り専用属性の変更・編集モードの変更・プロパティを開く・さいごに閉じたファイルを開く・etc...&lt;br /&gt;
*[[さいごに閉じたファイルを開く]] ※ポップアップメニュー (sukemaru) 2019/11/30&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
&lt;br /&gt;
*[[可変長を固定長に変換]] (Kuro)&lt;br /&gt;
*[[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
*[[標準変換]] (Kuro)&lt;br /&gt;
*[[連続する重複行を削除]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え]] (Kuro)&lt;br /&gt;
*[[降順で並び替え]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え／降順で並び替え]] トグル変換 (sukemaru) last update 2020/05/04 &amp;lt;br&amp;gt;「[[昇順で並び替え／降順で並び替え#昇順／降順トグル ＋ 文字列反転|昇順／降順トグル ＋ 文字列反転]]」を追加&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2019/12/21&lt;br /&gt;
*[[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
*[[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
*[[連番の挿入]] (手石)&lt;br /&gt;
*[[TSV(CSV) ⇒ 固定長]] (手石) update 2013/04/16&lt;br /&gt;
*[[行並べ替え]] (masme) 2013/08/25, update 2020/05/20&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25, update 2020/05/17&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&lt;br /&gt;
*[[TrueとFalse_を切り替える|YES／NO マクロ]] (sukemaru) update 2020/05/12 ※「&amp;lt;span style=&amp;quot;color:#0000c0;&amp;quot;&amp;gt;True&amp;lt;/span&amp;gt;と&amp;lt;span style=&amp;quot;color:#c00;&amp;quot;&amp;gt;False&amp;lt;/span&amp;gt;をトグル切り替え」&lt;br /&gt;
*[[基数変換10_16]] (シリル) 2019/02/10&lt;br /&gt;
*[[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
*[[罫線変換]] (シリル) 2019/03/09&lt;br /&gt;
*[[全角／半角変換]] (sukemaru) fixed 2019/05/11 ※「ＡＢＣ」→｢ABC｣ ／ ｢ABC｣→「ＡＢＣ」&lt;br /&gt;
*[[全角／半角 トグル変換]] (sukemaru) fixed 2019/05/20 ※「ＡＢＣ」⇔｢ABC｣&lt;br /&gt;
*[[大文字／小文字／頭文字 トグル変換]] (sukemaru) last update 2019/08/29 ※「Abc」→「ABC」→「abc」...&lt;br /&gt;
*[[ひらがな／カタカナ変換]] (sukemaru) update 2020/01/03 ※｢あいうえお｣⇔｢アイウエオ｣&lt;br /&gt;
*[[文字列の順番を逆に書き出す]] (sukemaru) update 2020/01/03 ※｢あいうえお｣⇔｣おえういあ｢&lt;br /&gt;
*[[TAB／半角空白 トグル変換]] (sukemaru) update 2020/05/29&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
&lt;br /&gt;
*[[文書から検索]] (Kuro)&lt;br /&gt;
*[[単語を抽出]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチしない行)]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチする行)]] (Kuro)&lt;br /&gt;
*[[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
*[[ポップアップメニューで検索先にジャンプ]] (手石, sukemaru) Last Update 2019/04/16&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2019/06/01&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)→[[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
*[https://github.com/GunseiPaseri/Mery_macro 文字出現量ランキング] (群生系パセリ) 2015/12/28&lt;br /&gt;
*[[検索ヒット数表示]] (ks)&lt;br /&gt;
*[[検索ヒット数表示（選択文字列）]] ※イベントマクロ　(sukemaru) last update 2019/12/03 &amp;lt;br&amp;gt;「[[検索ヒット数表示（選択文字列）#機能強化バージョン|文字数・行数・バイト数・ヒット件数]]」を追加&lt;br /&gt;
*[[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
*[[任意の検索エンジンで検索ー改良版]] (Takeshi) 2019/07/12&lt;br /&gt;
*[[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
*[[簡易検索一覧]] (シリル) 2018/12/24&lt;br /&gt;
*[[簡易検索一覧などをアウトプット]] (シリル) 2018/12/31&lt;br /&gt;
*[[複数置換]] (Noah)&lt;br /&gt;
*[[類義語アウトプット【Python】]] (シリル) 2019/03/24&lt;br /&gt;
*[[校正支援アウトプット]] (シリル) 2019/05/01&lt;br /&gt;
*[[次／前の文字列を検索・改]] (sukemaru) last update 2020/05/12 ※複数行選択から『次／前の文字列を検索』&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[Eclipse風コメントアウト(改)]] (pizz) 2020/03/15&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme, sukemaru) last update 2019/06/01&lt;br /&gt;
:([[コメントマーク付け外し#sukemaru 版|sukemaru版]]) last update 2019/12/01 ※ブックマーク対応&lt;br /&gt;
*[[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
*[[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
*[[タグファイルから補完]] (n)&lt;br /&gt;
*[[コードスニペットもどき]] (手石) Update 2012/12/20&lt;br /&gt;
*[[TeX文書のコンパイル]] (手石)&lt;br /&gt;
*[[TeX数式のチェック]] (手石)&lt;br /&gt;
*[[簡易数式計算]] (ks)&lt;br /&gt;
*[[定義へ移動]] (ks)&lt;br /&gt;
*[[タブの桁数]] (手石)&lt;br /&gt;
*[[行末の空白を削除]] (n) 2014/12/19&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを実行(掲載時点ではバッチファイル・Javascript・Lua・PHP・Perl・Python・Ruby・UWSCに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを構文チェック(掲載時点ではPHP・Perlに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[[説明を出力]] (s) Create 2015/08/16&lt;br /&gt;
*[[拡張子からコンソール実行]] (YOS G-spec) 2019/6/22更新&lt;br /&gt;
*[[JSON整形]](Ovis) Create 2019/03/25&lt;br /&gt;
*[[JS フォーマット]] (sukemaru) 2020/05/03　※JavaScript のソースコードの整形&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
*[[テキストブラウザ]] (Kuro)&lt;br /&gt;
*[[Yahoo!天気情報]] (Kuro, sukemaru) last update 2020/05/11&lt;br /&gt;
*[[メール送信]] (ks)&lt;br /&gt;
*[[あつまれ☆みんなのおもしろアイコン]] (有志)&lt;br /&gt;
&lt;br /&gt;
== 実験的マクロ・練習マクロなど ==&lt;br /&gt;
&lt;br /&gt;
*【自家用】[[ファイルのフルパスをコピーして閉じる]] ※イベント (sukemaru) update 2019/04/14&lt;br /&gt;
*【自家用】[[行の表示方法を切り替える]] (sukemaru) update 2019/08/25 ※論理行⇔表示行 トグル&lt;br /&gt;
*【自家用】[[対応する括弧に移動#sukemaru 版|対応するカッコに移動・選択]] (sukemaru) last update 2019/12/05&lt;br /&gt;
*【実験】 [[位置情報を保存してから「次の文字列を検索」]]＋復帰　(sukemaru) 2019/05/28&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[HSPキーワード検索]] (SSSE) 2019/08/29&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&lt;br /&gt;
*[[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
*[[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
*[[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
*[[JavaScript を実行]] (n)&lt;br /&gt;
*[[Ruby を実行]] (n)&lt;br /&gt;
*[[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
*[[マクロ・関数をメニューで呼び出す]] (aliquis) 2013/08/19&lt;br /&gt;
*[[階層化マクロメニュー]] (ks)&lt;br /&gt;
*[[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
*[[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
*[[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
*[[Editor.OpenFile()のポリフィル]](kazy)&lt;br /&gt;
*[[折り返しトグル切り替え]] (Bleat, sukemaru) update 2020/03/15&lt;br /&gt;
*[[ファイルロック (排他制御) 的なもの]] (PebblePot)&lt;br /&gt;
*[[Mery.iniのオプション値を取得]] ※組み込み用関数 (sukemaru) last update 2020/05/14&lt;br /&gt;
*[[Mery本体のバージョンチェック]] ※組み込み用関数 (sukemaru) 2019/04/17 &amp;lt;br&amp;gt;サンプルコード: 「Begin/EndUndoGroup() メソッドを使えるのは ver 2.7.0 以降」&lt;br /&gt;
*[[IO.Serialize() の JSON を参照する]] ※組み込み用関数 (sukemaru) 2019/04/17&lt;br /&gt;
*[[ポップアップメニューを「n*十件ずつ」のサブメニューに自動分割する]] ※組み込み用関数 (sukemaru) update 2020/05/28 &amp;lt;br&amp;gt;サンプルコード: 「すべての論理行をポップアップメニューに表示する」&lt;br /&gt;
*[[アクティブなタブのマクロを実行する]] (sukemaru) last update 2020/04/30&lt;br /&gt;
*[[「クリップボード履歴」メニューのマクロ化]]　(sukemaru) last update 2019/11/29 &amp;lt;br&amp;gt;　※ [[プラグイン:スニペットプラグイン|スニペット]] の機能を統合 ／ ※Mery ver 2.8.1 以降用 &amp;lt;br&amp;gt;　(2020/05/02: 追加コード「n 番目から m 番目まで貼り付け」、追加マクロ「追加コピー」)&lt;br /&gt;
*[[コンパクトメニュー]] (sukemaru) last update 2020/03/29　※[https://www.haijin-boys.com/software/mery/mery-3-0-0 Mery 3.0.1] までの追加コマンドに対応&lt;br /&gt;
*[[マクロメニュー]] (sukemaru) last update 2020/05/02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, sukemaru, 有志) last update 2020/05/22&lt;br /&gt;
*[[マテリアルデザインっぽいアイコンと『小マクロ集』]] ※アイコン収録数&#039;&#039;&#039;337&#039;&#039;&#039;コ (sukemaru) last update 2020/01/04&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[GetKeyState.exe(キー状態取得実行ファイル)]] (pizz) 2019/03/23&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks, 有志) Last Update 2019/09/08&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AB%E3%83%83%E3%82%B3%E3%81%A7%E5%9B%B2%E3%81%86&amp;diff=5113</id>
		<title>カッコで囲う</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AB%E3%83%83%E3%82%B3%E3%81%A7%E5%9B%B2%E3%81%86&amp;diff=5113"/>
		<updated>2020-05-21T22:47:35Z</updated>

		<summary type="html">&lt;p&gt;Isari: 不具合報告&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ダウンロード =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;全部入りの書庫をダウンロード&#039;&#039;&#039; → 「[[ファイル:カッコで囲う.zip|カッコで囲う.zip]]（アイコン入り）」 (最終更新 2019/04/07) &lt;br /&gt;
&lt;br /&gt;
: ZIP 書庫には以下のマクロの JS ファイルと、それぞれ専用の &amp;quot;マテリアルデザインっぽい&amp;quot; アイコンがふくまれています。&lt;br /&gt;
* [[#カッコで囲う（ポップアップメニューあり）|カッコで囲う（ポップアップメニューあり）]]&lt;br /&gt;
* [[#カッコで囲う (ポップアップメニューなし)|カッコで囲う（ポップアップメニューなし）]]&lt;br /&gt;
* [[#引用符を追加／削除|引用符を追加／削除]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[ファイル:カッコで囲う_ポップアップメニュー.png|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= カッコで囲う（ポップアップメニューあり） =&lt;br /&gt;
(最終更新 2019/03/28）&lt;br /&gt;
&lt;br /&gt;
ポップアップメニューから任意の &#039;&#039;&#039;カッコ&#039;&#039;&#039; や &#039;&#039;&#039;ダッシュ&#039;&#039;&#039; などの種類を選択して、選択範囲をカッコやいろいろな記号、文字列で囲います。 &amp;lt;br&amp;gt; &lt;br /&gt;
選択範囲がないばあい、基本的にはカーソル位置に ( ), &amp;lt; &amp;gt;, [ ], { }, 「 」, … などを挿入します。&lt;br /&gt;
&lt;br /&gt;
行番号のドラッグでの複数行選択やトリプルクリックでの行選択などで末尾改行が含まれているばあい、さいごの改行を無視します。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;既存のポップアップメニュー項目を減らしたいばあいは&#039;&#039;&#039;、ソースコード内の &amp;lt;u&amp;gt;&#039;&#039;&amp;quot;m.Add( … );&amp;quot;&#039;&#039;&amp;lt;/u&amp;gt; の行頭に &#039;&#039;&#039;//&#039;&#039;&#039; をつけてコメントアウトするとその項目をメニューから隠せます。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;メニュー項目を増やしたいばあいは、&#039;&#039;&#039;&lt;br /&gt;
# ソースコード冒頭の配列 p1, p2 の21番目～30番目に任意の &amp;lt;u&amp;gt; , &amp;quot;記号&amp;quot;&amp;lt;/u&amp;gt; を追加する&lt;br /&gt;
# 対応する番号をつけて &amp;lt;u&amp;gt;&#039;&#039;&amp;quot;m.Add( &amp;quot;カッコ・記号 の名前&amp;quot; , XX );&amp;quot;&#039;&#039;&amp;lt;/u&amp;gt; の行を追加する&lt;br /&gt;
# 対応する番号をつけて &amp;lt;u&amp;gt;&amp;quot;case XX:&amp;quot;&amp;lt;/u&amp;gt; を適当なグループに追加する&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
作成にあたり、「&#039;&#039;&#039;引用の追加&#039;&#039;&#039;」マクロとキーアサイン集の「[[キーアサイン集#括弧で挟む|括弧で挟む]]」マクロのコードを参考にしました（※「引用の追加」マクロは 2018/10/14 付けで公開停止になりました）。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
姉妹版として [[カッコをはずす|「カッコをはずす」、「カッコを削除／追加」、「カッコを追加／削除」]]マクロ、[[引用符／コメント|「引用符／コメント」]]マクロがあります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== メニューの項目 ==&lt;br /&gt;
&lt;br /&gt;
=== 任意の文字列で囲う ===&lt;br /&gt;
&lt;br /&gt;
文字入力用のダイアログで「前につける文字列」と「後ろにつける文字列」を指定します。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;任意の文字列１&#039;&#039;&#039;&lt;br /&gt;
:: 選択範囲全体を&#039;&#039;&#039;一組の&#039;&#039;&#039;指定文字列で前後を囲います。&lt;br /&gt;
* &#039;&#039;&#039;任意の文字列２&#039;&#039;&#039;&lt;br /&gt;
:: 選択範囲内の&#039;&#039;&#039;各行ごとに&#039;&#039;&#039;指定文字列で前後を囲います。 &amp;lt;br&amp;gt; ソースコード冒頭の &#039;&#039;&#039;&#039;&#039;skip&#039;&#039;&#039;&#039;&#039; フラグで、複数行選択のさいに空白行をスキップするか指定してください。 &amp;lt;br&amp;gt; 「wiki 文字装飾タグ」以外のカッコ／記号で&#039;&#039;&#039;各行ごとに囲いたい場合は、「任意の文字列２」を使用してください。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
改行コードとタブ文字は、それぞれ「&#039;&#039;&#039;\\\n&#039;&#039;&#039;」と「&#039;&#039;&#039;\\\t&#039;&#039;&#039;」で入力されたもの (注:￥記号３つ) を改行コードとタブ文字に置換するようにしてあります。&lt;br /&gt;
: ※「\n」、「\t」と入力するとそのままの文字列「\n」、「\t」を返します。 &amp;lt;br&amp;gt; ※文字コードでの入力には非対応です（入力されたままの文字列を返します）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== カッコ／記号 で囲う ===&lt;br /&gt;
&lt;br /&gt;
選択範囲全体を指定したカッコ／記号で囲います。 &amp;lt;br&amp;gt; 選択範囲なしで実行した場合は、カーソル位置にカッコ一組を挿入します。&lt;br /&gt;
&lt;br /&gt;
* (半角丸カッコ) 、 &amp;lt;半角山カッコ&amp;gt; 、 [半角角カッコ] 、 {半角波カッコ}、 &amp;lt;br&amp;gt; （全角丸カッコ） 、 「全角かぎカッコ」 、 『二重かぎカッコ』 、 【スミ付きカッコ】&lt;br /&gt;
:: 選択範囲をカッコで囲います。&lt;br /&gt;
&lt;br /&gt;
* ␣(半角丸カッコ)␣ 、 ␣&amp;quot;半角二重引用符&amp;quot;␣&lt;br /&gt;
:: 選択範囲をカッコまたは引用符で囲い、さらに半角スペースで囲います。&lt;br /&gt;
&lt;br /&gt;
* ␣半角スペース␣&lt;br /&gt;
:: 選択範囲を半角スペースで囲います。&lt;br /&gt;
&lt;br /&gt;
*  - 半角ハイフン -  、 ――ダッシュ×２―― 、 ～チルダ～&lt;br /&gt;
:: 「半角ハイフン」は、半角ハイフン=マイナス記号の両側に各１つずつ半角スペースがつきます（片側で半角３文字分）。&amp;lt;br&amp;gt; ※このグループにかぎり、選択範囲なしで実行したときは、片側分だけ　&amp;quot;&amp;lt;span style=&amp;quot;color:#c0c0c0;&amp;quot;&amp;gt;␣&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:#c0c0c0;&amp;quot;&amp;gt;␣&amp;lt;/span&amp;gt;&amp;quot;　&amp;quot;――&amp;quot;　&amp;quot;～&amp;quot;　記号を挿入します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
●以下の&#039;&#039;&#039;削除系の各コマンド&#039;&#039;&#039;は、選択範囲がないときにはポップアップメニューに表示されません。&lt;br /&gt;
&lt;br /&gt;
=== ひとつ削除 ===&lt;br /&gt;
&lt;br /&gt;
* 「[[カッコをはずす]]」マクロのコードを移植しました。&amp;lt;br&amp;gt; &#039;&#039;&#039;選択範囲全体の先頭/末尾&#039;&#039;&#039;があらかじめ用意された「対になるカッコ・記号」のペアであれば、その一組のペアを削除します。&lt;br /&gt;
※ポップアップメニューの &amp;quot;カッコの追加用&amp;quot; の項目にない多種多様な記号のペアに対応します。&amp;lt;br&amp;gt; ※「カッコをはずす」マクロの &amp;quot;選択範囲の外側 (前と後) にあるカッコの削除&amp;quot; 機能はありません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 任意の 文字列／文字数 を削除 ===&lt;br /&gt;
&lt;br /&gt;
「任意の文字列２」や「wiki用 マークアップ」と同様に、選択範囲内の論理行の&#039;&#039;&#039;各行頭と行末にたいして&#039;&#039;&#039;作用します。&lt;br /&gt;
&amp;lt;br&amp;gt; ※選択範囲を &amp;quot;論理行単位&amp;quot; で拡張しないので、先頭行と末行においては行頭/行末ではなく「選択範囲の先頭/末尾」にたいして作用します。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;任意の文字数を削除&#039;&#039;&#039; ではアラビア数字（半角/全角）以外で入力された文字列をすべて無視します。例えば「&#039;&#039;&#039;1a２あ&#039;&#039;&#039;」と入力された場合は、半角数字の「&#039;&#039;&#039;12&#039;&#039;&#039;」として扱います。&lt;br /&gt;
* &#039;&#039;&#039;任意の文字列を削除&#039;&#039;&#039; は簡易的な処理コードなので、正規表現を使用できません。&amp;lt;br&amp;gt; また、タブ文字の扱いは「任意の文字列２（追加）」の場合とおなじく「&#039;&#039;&#039;\\\t&#039;&#039;&#039;」で入力されたもの (注:￥記号３つ) をタブ文字（&#039;&#039;&#039;\t&#039;&#039;&#039;）として処理します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 先頭／末尾の空白を削除 ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;先頭／末尾から空白を削除&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;先頭の空白を削除&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;末尾の空白を削除&#039;&#039;&#039;&lt;br /&gt;
:: 選択範囲内の論理行の&#039;&#039;&#039;各行頭と行末にたいして&#039;&#039;&#039;作用します。&lt;br /&gt;
:: 削除対象の空白文字は、「半角スペース」「全角スペース」「タブ文字」の３種です。&amp;lt;br&amp;gt; インデント（字下げ）の解除や、行末のムダな空白文字の削除に利用できます。&lt;br /&gt;
&lt;br /&gt;
※選択範囲を &amp;quot;論理行単位&amp;quot; で拡張しないので、先頭行と末行においては行頭/行末ではなく「選択範囲の先頭/末尾」にたいして作用します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ｎ文字ずつ前後を削除 ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;１文字ずつ前後を削除&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;２文字ずつ前後を削除&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;３文字ずつ前後を削除&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;&#039;選択範囲全体の先頭/末尾から&#039;&#039;&#039;指定の文字数ずつ削除します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;１文字ずつ前後を削除（外側）&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;&#039;選択範囲全体の前と後ろの&#039;&#039;&#039;各１文字を削除します。 &amp;lt;br&amp;gt; ※選択範囲が先頭行の行頭から始まっている場合や、最終行の行末で終わっている場合は、選択範囲内の先頭または末尾の１文字が削除されます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== JS / XML コメントアウト ===&lt;br /&gt;
&lt;br /&gt;
３種類の &#039;&#039;&#039;挿入型コメントアウト&#039;&#039;&#039; のメタ記号で選択範囲の文字列をコメントアウトできます。また、アンコメント用のコマンドでコメントアウト状態を解除できます。&lt;br /&gt;
* &#039;&#039;&#039;/* JavaScript 挿入型コメントアウト１ */&#039;&#039;&#039;&lt;br /&gt;
:: 選択範囲全体を &#039;&#039;&#039;/* &#039;&#039;&#039; と &#039;&#039;&#039; */&#039;&#039;&#039; で囲います。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;/* *JavaScript コメントアウト２（ブロックコメント） */&#039;&#039;&#039;&lt;br /&gt;
:: /* &amp;lt;br&amp;gt; ​ * （複数行の）選択範囲全体を　&amp;quot;&#039;&#039;&#039;/* \n&#039;&#039;&#039;&amp;quot;　と　&amp;quot;&#039;&#039;&#039;\n */&#039;&#039;&#039;&amp;quot;　で囲い、&amp;lt;br&amp;gt; ​ * 範囲内の各行の行頭に　&amp;quot;&#039;&#039;&#039; * &#039;&#039;&#039;&amp;quot;　を付けます。&amp;lt;br&amp;gt; ​ */&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;lt;!-- XML 挿入型コメントアウト --&amp;gt;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:: 選択範囲全体を　&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;lt;!-- &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;　と　&#039;&#039;&#039;&amp;lt;nowiki&amp;gt; --&amp;gt;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;　で囲います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;JS アンコメント&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;XML アンコメント&#039;&#039;&#039;&lt;br /&gt;
:: 上の３種のコメントアウトのメタ記号を削除してアンコメントします。&lt;br /&gt;
&lt;br /&gt;
※ &amp;lt;u&amp;gt;先頭と末尾のコメントマークは選択範囲の両端でなければ削除されません&amp;lt;/u&amp;gt;（選択範囲の先頭/末尾に半角スペース×１が付いていても、コメントマークといっしょに削除できます）。 &amp;lt;br&amp;gt; また、選択範囲内に２組以上のコメントがあると、正常にアンコメントできません。&lt;br /&gt;
&lt;br /&gt;
※ &amp;quot;JS アンコメント&amp;quot; は中間行の行頭記号（アスタリスクと全角/半角中黒）とその前後の半角スペースを削除します。これらの行頭記号を使用した&#039;&#039;&#039;箇条書き&#039;&#039;&#039;を範囲選択して実行すると、同様に行頭記号を削除します。&lt;br /&gt;
&lt;br /&gt;
※ プログラミングをしない人には使いみちがないとおもいますので、ZIP のソースでは初期状態でコメントアウトしてあります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== wiki用 マークアップ ===&lt;br /&gt;
&lt;br /&gt;
５種類の wiki用 文字列装飾タグ（[https://www.mediawiki.org/wiki/Help:Formatting/ja テキスト整形マークアップ]）を挿入できます。&lt;br /&gt;
&lt;br /&gt;
選択範囲内の&#039;&#039;&#039;各行ごとに&#039;&#039;&#039;指定のタグで前後を囲います。 &amp;lt;br&amp;gt; ソースコード冒頭の &#039;&#039;skip&#039;&#039; フラグで、複数行選択のさいに空白行をスキップするか指定してください。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;太字&#039;&#039;&#039;&lt;br /&gt;
:: 選択範囲全体を &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;（シングルクオート×３） で囲います。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;斜体（Italic）&#039;&#039;&lt;br /&gt;
:: 選択範囲全体を &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;（シングルクオート×２） で囲います。&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;u&amp;gt;下線&amp;lt;/u&amp;gt;&lt;br /&gt;
:: 選択範囲全体を　&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;lt;u&amp;gt;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;　と　&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;　で囲います。&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[[内部リンク]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:: 選択範囲全体を　&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;　と　&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;　で囲い、&amp;lt;nowiki&amp;gt;[[リンク|ラベル]]&amp;lt;/nowiki&amp;gt; 型の [https://www.mediawiki.org/wiki/Help:Links/ja#Internal_links 内部リンク] にします。&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;​nowiki&amp;gt;マークアップ回避&amp;lt;​/nowiki&amp;gt;&lt;br /&gt;
:: 選択範囲全体を　&#039;&#039;&#039;&amp;lt;​nowiki&amp;gt;&#039;&#039;&#039;　と　&#039;&#039;&#039;&amp;lt;​/nowiki&amp;gt;&#039;&#039;&#039;　で囲います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
※ wiki用 文字列装飾タグのままでは使いみちがないとおもいますので、HTML タグ &amp;lt;nowiki&amp;gt;&amp;lt;a&amp;gt; &amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt; などに書き換えてしまうか、ポップアップメニュー項目をコメントアウトしてしまうとよいでしょう（ZIP のソースでは初期状態でコメントアウトしてあります）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mery マクロ用 ===&lt;br /&gt;
&lt;br /&gt;
選択範囲の文字列をコピーし、&amp;quot;二重引用符&amp;quot; つきにして、以下の各種の構文で囲います。&lt;br /&gt;
&lt;br /&gt;
※選択文字列のある行の&#039;&#039;&#039;ひとつしたの行&#039;&#039;&#039;に各構文を挿入します。&lt;br /&gt;
&amp;lt;br&amp;gt; ※選択範囲が複数行の場合は　&amp;quot;&#039;&#039;&#039;+ \n +&#039;&#039;&#039;&amp;quot;　でつなぎ合わせます。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;アウトプット&#039;&#039;&#039;&lt;br /&gt;
:: Outputbar.Writeln( &amp;quot;...&amp;quot; );　の構文にしてアウトプットバーを表示状態にします。&lt;br /&gt;
* &#039;&#039;&#039;アラート&#039;&#039;&#039;&lt;br /&gt;
:: Alert( &amp;quot;...&amp;quot; );　の構文にします。&lt;br /&gt;
* &#039;&#039;&#039;コンファーム&#039;&#039;&#039;&lt;br /&gt;
:: Confirm( &amp;quot;...&amp;quot; );　の構文にします。&lt;br /&gt;
* &#039;&#039;&#039;ステータス&#039;&#039;&#039;&lt;br /&gt;
:: Status = &amp;quot;...&amp;quot;;　の構文にします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
※ マクロのプログラミングをしない人には使いみちがないとおもいますので、ZIP のソースでは初期状態でコメントアウトしてあります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;height:80em; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;カッコ ...&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;カッコで囲う (ポップアップメニュー）&amp;quot;&lt;br /&gt;
// #icon = &amp;quot;Mery用 マテリアルデザインっぽいアイコン.icl&amp;quot;,255&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * -----------------------------------------------&lt;br /&gt;
 * カッコで囲う(ポップアップメニュー）&lt;br /&gt;
 * sukemaru, 2018/08/24 - 2019/03/28&lt;br /&gt;
 * -----------------------------------------------&lt;br /&gt;
 * ※ ポップアップメニューの項目は、m.Add( … ); の不要な行を行をコメントアウトすれば隠せる。&lt;br /&gt;
 * （配列から削除する場合は中身だけ消して  &amp;quot;&amp;quot;  として空要素を残しておかないと&lt;br /&gt;
 *   メニューや処理コードの ID と一致しなくなる）&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ■「任意の文字列２」と、wiki 文字装飾タグで、複数行の選択範囲内の空白行をスキップするか？&lt;br /&gt;
var skip = true;	// （true; スキップする ／ false; スキップしない）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ■開きカッコ p1 を配列で定義する&lt;br /&gt;
var p1 = new Array( &amp;quot;&amp;quot; ,		// 以下 r = 1～10、11～20、21～ の ID 順&lt;br /&gt;
  &amp;quot;(&amp;quot; ,  &amp;quot;&amp;lt;&amp;quot; ,  &amp;quot;[&amp;quot; ,  &amp;quot;{&amp;quot; ,  &amp;quot;（&amp;quot; ,  &amp;quot;「&amp;quot; ,  &amp;quot;『&amp;quot; ,  &amp;quot;【&amp;quot; ,  &amp;quot; （&amp;quot; ,  &amp;quot; (&amp;quot; ,&lt;br /&gt;
  &amp;quot; \&amp;quot;&amp;quot; ,  &amp;quot; &amp;quot; ,  &amp;quot; - &amp;quot; ,  &amp;quot;――&amp;quot; ,  &amp;quot;～&amp;quot; ,  &amp;quot;&#039;&#039;&#039;&amp;quot; ,  &amp;quot;&#039;&#039;&amp;quot; ,  &amp;quot;&amp;lt;u&amp;gt;&amp;quot; ,  &amp;quot;[[&amp;quot; , &amp;quot;&amp;lt;nowiki&amp;gt;&amp;quot; ,&lt;br /&gt;
  &amp;quot;&amp;quot; , &amp;quot;&amp;quot; , &amp;quot;&amp;quot; , &amp;quot;&amp;quot; , &amp;quot;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
// ■閉じカッコ p2 を配列で定義する&lt;br /&gt;
var p2 = new Array( &amp;quot;&amp;quot; ,		// 以下 1～10、11～20、21～ の ID 順&lt;br /&gt;
  &amp;quot;)&amp;quot; ,  &amp;quot;&amp;gt;&amp;quot; ,  &amp;quot;]&amp;quot; ,  &amp;quot;}&amp;quot; ,  &amp;quot;）&amp;quot; ,  &amp;quot;」&amp;quot; ,  &amp;quot;』&amp;quot; ,  &amp;quot;】&amp;quot; ,  &amp;quot;） &amp;quot; ,  &amp;quot;) &amp;quot; ,&lt;br /&gt;
  &amp;quot;\&amp;quot; &amp;quot; ,  &amp;quot; &amp;quot; ,  &amp;quot; - &amp;quot; ,  &amp;quot;――&amp;quot; ,  &amp;quot;～&amp;quot; ,  &amp;quot;&#039;&#039;&#039;&amp;quot; ,  &amp;quot;&#039;&#039;&amp;quot; ,  &amp;quot;&amp;lt;/u&amp;gt;&amp;quot; ,  &amp;quot;]]&amp;quot; , &amp;quot;&amp;lt;/nowiki&amp;gt;&amp;quot; ,&lt;br /&gt;
  &amp;quot;&amp;quot; , &amp;quot;&amp;quot; , &amp;quot;&amp;quot; , &amp;quot;&amp;quot; , &amp;quot;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var s = document.selection&lt;br /&gt;
&lt;br /&gt;
// ポップアップメニュー項目の定義&lt;br /&gt;
var m = CreatePopupMenu(),&lt;br /&gt;
  sm1 = CreatePopupMenu(),&lt;br /&gt;
  sm2 = CreatePopupMenu(),&lt;br /&gt;
  sm3 = CreatePopupMenu();&lt;br /&gt;
var grayFlag = s.Text ? 0 : meMenuGrayed;&lt;br /&gt;
  // m.Add( &amp;quot;ラベル&amp;quot;, r ); の各行は、任意に上下移動（並べ替え）してよいが、&lt;br /&gt;
  // r の数値は上の配列の並び順やテキスト変換処理の case r: に対応しているので変更しないこと！&lt;br /&gt;
&lt;br /&gt;
/* 入力 ダイアログ */&lt;br /&gt;
m.Add( &amp;quot;任意の文字列 で前後を囲う (&amp;amp;E) ...&amp;quot;, 1050 );   	// Enter the custom string(s)&lt;br /&gt;
m.Add( &amp;quot;任意の文字列 ２ (&amp;amp;E) ...&amp;quot;, 1051 );	// 各行ごとに指定文字列で囲う（skip フラグを指定すること）&lt;br /&gt;
&lt;br /&gt;
/* 削除系コマンド */&lt;br /&gt;
if ( s.Text ) {					// 選択範囲がないときは表示しない&lt;br /&gt;
  m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
  m.Add( &amp;quot;▲ ひとつ削除 (&amp;amp;1)&amp;quot;, 1038 );&lt;br /&gt;
  m.AddPopup( &amp;quot;● 削除 (&amp;amp;T)&amp;quot;, sm1 );&lt;br /&gt;
    sm1.Add( &amp;quot;　　先頭／末尾から任意の 文字列 を削除 （各行） (&amp;amp;Z) ...&amp;quot;, 1053 );&lt;br /&gt;
    sm1.Add( &amp;quot;　　先頭／末尾から任意の 文字数 を削除 （各行） (&amp;amp;X) ...&amp;quot;, 1052 );&lt;br /&gt;
    sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    sm1.Add( &amp;quot;≫ 先頭／末尾から 空白 を削除 ≪ （各行） (&amp;amp;W)&amp;quot;, 1037 );&lt;br /&gt;
    sm1.Add( &amp;quot;≫ 先頭の 空白 を削除　　 （各行） (&amp;amp;T)&amp;quot;, 1035 );&lt;br /&gt;
    sm1.Add( &amp;quot;　　末尾の 空白 を削除 ≪ （各行） (&amp;amp;B)&amp;quot;, 1036 );&lt;br /&gt;
    sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    sm1.Add( &amp;quot;◀  1文字ずつ 前後を削除  ▶ （外側） (&amp;amp;0)&amp;quot;, 1034 );&lt;br /&gt;
    sm1.Add( &amp;quot; ▶ &amp;amp;1文字ずつ前後を削除 ◀  (１)&amp;quot;, 1031 );&lt;br /&gt;
    sm1.Add( &amp;quot; ▶ &amp;amp;2文字ずつ前後を削除 ◀  (２)&amp;quot;, 1032 );&lt;br /&gt;
    sm1.Add( &amp;quot; ▶ &amp;amp;3文字ずつ前後を削除 ◀  (３)&amp;quot;, 1033 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* カッコ */&lt;br /&gt;
m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
m.Add( &amp;quot; ( 半角 小カッコ )  (&amp;amp;P)&amp;quot;, 1 );		// Parenthesis&lt;br /&gt;
m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
m.Add( &amp;quot;&amp;lt; 半角 山カッコ &amp;gt; (&amp;amp;A)&amp;quot;, 2 );  		// Angle brackets&lt;br /&gt;
m.Add( &amp;quot; [ 半角 大カッコ ]  (&amp;amp;B)&amp;quot;, 3 );		// square Brackets&lt;br /&gt;
m.Add( &amp;quot; { 半角 中カッコ }  (&amp;amp;C)&amp;quot;, 4 );		// Curly brackets&lt;br /&gt;
&lt;br /&gt;
m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
m.Add( &amp;quot;（ 全角 小カッコ ） (&amp;amp;R)&amp;quot;, 5 );      	// Round brackets&lt;br /&gt;
m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
m.Add( &amp;quot;「 全角 かぎカッコ 」 (&amp;amp;K)&amp;quot;, 6 );    	// Kakko&lt;br /&gt;
m.Add( &amp;quot;『 全角 二重かぎカッコ 』 (&amp;amp;W)&amp;quot;, 7 );	// White corner brackets&lt;br /&gt;
m.Add( &amp;quot;【 全角 スミ付きカッコ 】 (&amp;amp;L)&amp;quot;, 8 );	// Lenticular brackets&lt;br /&gt;
&lt;br /&gt;
m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
m.Add( &amp;quot;␣（ 全角 小カッコ ）␣ (&amp;amp;F)&amp;quot;, 9 ); 	// Full width parenthesis (w/ space)&lt;br /&gt;
m.Add( &amp;quot;␣ ( 半角 小カッコ ) ␣ (&amp;amp;H)&amp;quot;, 10 );	// Half-width parenthesis (w/ space)&lt;br /&gt;
m.Add( &#039;␣ &amp;quot;  半角 引用符  &amp;quot; ␣ (&amp;amp;Q)&#039;, 11 );	// double-Quotation mark (w/ space)&lt;br /&gt;
m.Add( &amp;quot;␣　半角 スペース　␣ (&amp;amp;S)&amp;quot;, 12 );  	// Space&lt;br /&gt;
&lt;br /&gt;
m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
m.Add( &amp;quot;  - 　半角 ハイフン　 -   (&amp;amp;-)&amp;quot;, 13 );	// hyphen-minus	 (w/ spaces)&lt;br /&gt;
m.Add( &amp;quot;―― 全角 ダッシュ ―― (&amp;amp;D)&amp;quot;, 14 );  	// Dash&lt;br /&gt;
m.Add( &amp;quot;～ 全角 チルダ ～ (&amp;amp;T)&amp;quot;, 15 );        	// Tilde&lt;br /&gt;
&lt;br /&gt;
/* JS コメントアウト ／ XML コメントアウト */&lt;br /&gt;
// m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
// m.Add( &amp;quot;/* *  JS コメントアウト ２  */ (&amp;amp;J)&amp;quot;, 1041 );	// JavaScript comment out (block comment)&lt;br /&gt;
// m.Add( &amp;quot;/*  JS コメントアウト １  */ (&amp;amp;V)&amp;quot;, 1042 );   	// jaVascript comment out&lt;br /&gt;
// m.Add( &amp;quot;▲　JS　アンコメント (&amp;amp;U)&amp;quot;, 1043, grayFlag );	// Uncomment&lt;br /&gt;
// m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
// m.Add( &amp;quot;&amp;lt;!--  XML コメントアウト  --&amp;gt; (&amp;amp;X)&amp;quot;, 1044 ); 	// Xml comment out&lt;br /&gt;
// m.Add( &amp;quot;▲　XML アンコメント (&amp;amp;M)&amp;quot;, 1045, grayFlag );	// xMl uncomment&lt;br /&gt;
&lt;br /&gt;
/* wiki マークアップ&lt;br /&gt;
   このブロックの項目は、複数行を選択しているとき「選択範囲の各行ごとに囲う」処理をおこなう&lt;br /&gt;
  （※ skip フラグを指定すること） */ &lt;br /&gt;
// m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
// m.AddPopup( &amp;quot;ｗｉｋｉ 文字修飾 (&amp;amp;W)&amp;quot;, sm2 );&lt;br /&gt;
//   sm2.Add( &amp;quot;&#039;&#039;&#039;　ｗｉｋｉ 太字　&#039;&#039;&#039;  (&amp;amp;B)&amp;quot;, 16 );  	// Bold&lt;br /&gt;
//   sm2.Add( &amp;quot;&#039;&#039; 　ｗｉｋｉ 斜体　 &#039;&#039;  ( &amp;amp;I )&amp;quot;, 17 );	// Italic&lt;br /&gt;
//   sm2.Add( &amp;quot;&amp;lt;u&amp;gt; ｗｉｋｉ 下線 &amp;lt;/u&amp;gt;  (&amp;amp;U)&amp;quot;, 18 );   	// Under line	&lt;br /&gt;
//   sm2.Add( &amp;quot;[[ 　ｗｉｋｉ リンク　 ]]  (&amp;amp;L)&amp;quot;, 19 );	// Link&lt;br /&gt;
//   sm2.Add( &amp;quot;&amp;lt;nowiki&amp;gt;　&amp;lt;/nowiki&amp;gt;  (&amp;amp;N)&amp;quot;, 20 );      	// Nowiki&lt;br /&gt;
&lt;br /&gt;
/* Mery マクロ用&lt;br /&gt;
   以下の項目は、選択範囲の文字列をコピーして、一行下でそれぞれの構文で囲う */ &lt;br /&gt;
// m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
// m.AddPopup( &amp;quot;Mery マクロ (&amp;amp;Y)&amp;quot;, sm3 );&lt;br /&gt;
//   sm3.Add( &amp;quot;アウトプット (&amp;amp;O)&amp;quot;, 1060 );	// OutputBar.Writeln( ... )&lt;br /&gt;
//   sm3.Add( &amp;quot;アラート (&amp;amp;A)&amp;quot;, 1061 );    	// Alert( ... )&lt;br /&gt;
//   sm3.Add( &amp;quot;コンファーム (&amp;amp;C)&amp;quot;, 1062 );	// Confirm( ... )&lt;br /&gt;
//   sm3.Add( &amp;quot;ステータス (&amp;amp;S)&amp;quot;, 1063 );  	// Status = ... &lt;br /&gt;
&lt;br /&gt;
// m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
// m.Add( &amp;quot;キャンセル&amp;quot;, 0 );	// Escキー でキャンセルできるのでアクセラレータなし&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ポップアップメニューを表示&lt;br /&gt;
// m.Track(0); ならキャレット位置、m.Track(1); ならカーソル位置にポップアップ&lt;br /&gt;
var r = m.Track( mePosMouse = 1 );	// 選択されたメニュー項目のIDを r に格納する&lt;br /&gt;
&lt;br /&gt;
if ( r &amp;gt; 0 ) {&lt;br /&gt;
  Redraw = false;&lt;br /&gt;
&lt;br /&gt;
  var anc = s.GetAnchorPos();        	// 選択範囲の開始位置 （キャレットのない側）&lt;br /&gt;
  var act = s.GetActivePos();        	// 選択範囲の終了位置 （キャレットのある側）&lt;br /&gt;
  var tp = ( anc &amp;lt; act ) ? anc : act;	// 選択範囲の先頭位置&lt;br /&gt;
  var bp = ( anc &amp;lt; act ) ? act : anc;	// 選択範囲の末尾位置&lt;br /&gt;
&lt;br /&gt;
  if ( s.IsEmpty ) {           		// 選択範囲がなければ&lt;br /&gt;
    var pos = s.GetActivePos();		// カーソル位置を取得&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // マクロ実行前の選択範囲の各座標を取得&lt;br /&gt;
  var tx = s.GetTopPointX( mePosLogical );&lt;br /&gt;
  var ty = s.GetTopPointY( mePosLogical );&lt;br /&gt;
  var bx = s.GetBottomPointX( mePosLogical );&lt;br /&gt;
  var by = s.GetBottomPointY( mePosLogical );&lt;br /&gt;
&lt;br /&gt;
  // 選択範囲の末尾位置を調整（最後の \n を含めない）&lt;br /&gt;
  // 選択範囲の末尾が行頭 x = 1 にあるばあい ～	※ { 中カッコ } のばあいは末尾の調整をしない&lt;br /&gt;
  if ( ! s.IsEmpty &amp;amp;&amp;amp; bx == 1 &amp;amp;&amp;amp; r != 4 ) {&lt;br /&gt;
    s.SetActivePos( bp - 1 );			// 元の選択範囲の末尾より1行うえの末尾	// 先頭&lt;br /&gt;
    s.SetAnchorPos( tp );    			// 元の選択範囲の先頭まで選択&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 選択範囲の文字列を取得&lt;br /&gt;
  var st = s.Text;&lt;br /&gt;
&lt;br /&gt;
  // IDごとのテキスト変換処理&lt;br /&gt;
  switch ( r ) {&lt;br /&gt;
&lt;br /&gt;
    // カッコ&lt;br /&gt;
    case 1:  case 2:  case 3:  case 4:  case 5:  case 6:&lt;br /&gt;
    case 7:  case 8:  case 9:  case 10:  case 11:  case 12:&lt;br /&gt;
    // case 21:  case 22:  case 23:  case 24:  case 25:&lt;br /&gt;
      s.Text = p1[r] + st + p2[r];		// カッコ p1 ＆ p2 で囲う&lt;br /&gt;
&lt;br /&gt;
      if ( pos ) {				// 選択範囲がなければ&lt;br /&gt;
        s.SetActivePos( pos + p1[r].length );	// カーソルをカッコのなかに移動&lt;br /&gt;
      }&lt;br /&gt;
      else {					// 選択範囲があれば&lt;br /&gt;
        s.Text = p1[r] + st + p2[r];		// 選択範囲 st をカッコ p1 ＆ p2 で囲う&lt;br /&gt;
        s.SetAnchorPos( tp );			// 選択範囲を復元&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // ハイフン、ダッシュ、チルダ&lt;br /&gt;
    case 13:  case 14:  case 15:&lt;br /&gt;
      if ( pos ) {			// 選択範囲がなければ&lt;br /&gt;
        document.Write( p1[r] );	// 片側分 p1 だけ挿入&lt;br /&gt;
      }&lt;br /&gt;
      else {				// 選択範囲があれば&lt;br /&gt;
        s.Text = p1[r] + st + p2[r];	// 選択範囲 st をダーシ p1 ＆ p2 で囲う&lt;br /&gt;
        s.SetAnchorPos( tp );		// 選択範囲を復元&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // wiki 文字装飾タグ	※ 太字／斜体／下線／&amp;lt;nowiki&amp;gt;&lt;br /&gt;
    case 16:  case 17:  case 18:  case 20:&lt;br /&gt;
      // 選択範囲内の「各行を囲う」処理をおこなう。&lt;br /&gt;
      // 複数行選択で空白行をスキップするかは冒頭の skip フラグで決定する。&lt;br /&gt;
      // 選択範囲なしで実行するとタグの間がわかりづらくなるので全角スペースを挿入する。&lt;br /&gt;
&lt;br /&gt;
      if ( pos ) {					// 選択範囲がなければ&lt;br /&gt;
        document.Write( p1[r] + &amp;quot;　&amp;quot; + p2[r] );		// p1 ＆ p2 と全角スペースを挿入&lt;br /&gt;
        s.SetAnchorPos( pos + p1[r].length );		// カーソルをタグのなかに移動&lt;br /&gt;
        s.SetActivePos( s.GetAnchorPos() + 1, true );	// タグの中の全角スペースを範囲選択&lt;br /&gt;
      }&lt;br /&gt;
      else {						// 選択範囲があれば&lt;br /&gt;
        var ad = AddBrackets( st, p1[r], p2[r] );	// 選択範囲 st の各行を p1 ＆ p2 で囲う&lt;br /&gt;
        if ( ad != st ) {&lt;br /&gt;
          s.Text = ad;&lt;br /&gt;
          s.SetAnchorPos( tp );				// 選択範囲を復元&lt;br /&gt;
        }&lt;br /&gt;
        else {				// テキストに変更なし ( skip &amp;amp;&amp;amp; st.match( /^\s*$/g ) )&lt;br /&gt;
          s.SetActivePos( act );	// 選択範囲を復元&lt;br /&gt;
          s.SetAnchorPos( anc );&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // wiki 文字装飾		※ 内部リンク用タグ	[[リンク|ラベル]]&lt;br /&gt;
    case 19:&lt;br /&gt;
      // 選択範囲内の「各行を囲う」処理をおこなう。&lt;br /&gt;
      // 複数行選択で空白行をスキップするかは冒頭の skip フラグで決定する。&lt;br /&gt;
&lt;br /&gt;
      if ( pos ) {						// 選択範囲がなければ&lt;br /&gt;
        document.Write( p1[r] + &amp;quot;　|　&amp;quot; + p2[r] );		// p1 ＆ p2 と &amp;quot; | &amp;quot; を挿入&lt;br /&gt;
        s.SetActivePos( pos + p1[r].length );			// カーソルをカッコの中に移動&lt;br /&gt;
        s.SetAnchorPos( s.GetActivePos() + &amp;quot;　|　&amp;quot;.length );	// カッコの中を範囲選択&lt;br /&gt;
      }&lt;br /&gt;
      else {						// 選択範囲があれば&lt;br /&gt;
        var ad = AddWikiLink( st, p1[r], p2[r] );	// 選択範囲 st の各行を [[str|str]] に変換&lt;br /&gt;
        if ( ad != st ) {&lt;br /&gt;
          s.Text = ad;&lt;br /&gt;
          s.SetActivePos( tp + p1[r].length );		// p1 の後ろにカーソルを移動&lt;br /&gt;
        }&lt;br /&gt;
        else {				// テキストに変更なし ( skip &amp;amp;&amp;amp; st.match( /^\s*$/g ) )&lt;br /&gt;
          s.SetActivePos( act );	// 選択範囲を復元&lt;br /&gt;
          s.SetAnchorPos( anc );&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // n文字ずつ前後を削除（内）&lt;br /&gt;
    case 1031:  case 1032:  case 1033:&lt;br /&gt;
      if ( ! s.IsEmpty ) {		// 選択範囲があれば&lt;br /&gt;
        var n = ( r == 1031 ) ? 1 :	// 1文字ずつ&lt;br /&gt;
                ( r == 1032 ) ? 2 :	// 2文字ずつ&lt;br /&gt;
               /* r == 1033 */  3 ;	// 3文字ずつ&lt;br /&gt;
&lt;br /&gt;
        s.Text = st.slice( n, st.length - n );	// 選択範囲の両端から n 文字ずつ消す&lt;br /&gt;
        s.SetAnchorPos( tp );			// 選択範囲を復元&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // １文字ずつ前後を削除（外）&lt;br /&gt;
    case 1034:&lt;br /&gt;
      s.SetAnchorPos( tp - 1 );		// 選択範囲の先頭側を１文字拡張&lt;br /&gt;
      s.SetActivePos( bp + 1, true );	// 選択範囲の末尾側を１文字拡張&lt;br /&gt;
      s.Text = s.Text.slice( 1, - 1 );	// 先頭/末尾を１文字ずつ削除&lt;br /&gt;
      s.SetAnchorPos( tp - 1 );		// 選択範囲を復帰する&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // 行頭／行末の空白を削除	※選択範囲を論理行単位に拡張はしない&lt;br /&gt;
    case 1035:  case 1036:  case 1037:&lt;br /&gt;
      if ( ! s.IsEmpty ) {	// 選択範囲があれば&lt;br /&gt;
        var d = ( r == 1037 ) ? st.replace( /^[\s　]*|[\s　]*$/gm , &amp;quot;&amp;quot; ) :	// 行頭／行末&lt;br /&gt;
                ( r == 1035 ) ? st.replace( /^[\s　]*/gm , &amp;quot;&amp;quot; ) :		// 行頭&lt;br /&gt;
               /* r == 1036 */  st.replace( /[\s　]*$/gm , &amp;quot;&amp;quot; ) ;		// 行末&lt;br /&gt;
&lt;br /&gt;
        // 選択範囲に指定文字列がなかった場合 undo 履歴を残さない&lt;br /&gt;
        if ( d != st ) {&lt;br /&gt;
          s.Text = d;			// 削除完了&lt;br /&gt;
          s.SetAnchorPos( tp );		// 選択範囲を復元&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // ひとつ削除 （※「カッコをはずす」マクロのコードを流用）&lt;br /&gt;
    case 1038:&lt;br /&gt;
      // 「ひとつ削除」用のカッコの定義&lt;br /&gt;
      var brackets = &amp;quot;()｢｣&amp;lt;&amp;gt;[]{}\&amp;quot;\&amp;quot;&#039;&#039;（）「」『』＜＞［］｛｝【】〖〗⦅⦆｟｠〚〛〔〕〘〙〈〉《》&amp;quot;&lt;br /&gt;
                   + &amp;quot;””’’〝〞〝〟‘’“”――～～〜〜  &amp;quot;&lt;br /&gt;
                   + &amp;quot;++--**\/\/##==%%::：：@@＠＠※※††｜｜……␣␣＿＿&amp;quot;&lt;br /&gt;
                   + &amp;quot;○○●●□□■■◇◇◆◆▽▽▼▼△△▲▲☆☆★★&amp;quot;&lt;br /&gt;
                   + &amp;quot;←→→←↑↓↓↑←←→→↑↑↓↓&amp;quot;&lt;br /&gt;
                   + &amp;quot;¿?¡!‚‘‚’„“„”“„‘‚‹››‹«»»«——‐‐－－&amp;quot;&lt;br /&gt;
                   + &amp;quot;﹁﹂﹃﹄︵︶︿﹀︽︾︹︺︷︸︻︼︗︘&amp;quot;;&lt;br /&gt;
      var brackets2 = [&lt;br /&gt;
        &amp;quot;&amp;lt;b&amp;gt;&amp;quot; , &amp;quot;&amp;lt;/b&amp;gt;&amp;quot; , &amp;quot;&amp;lt;i&amp;gt;&amp;quot; , &amp;quot;&amp;lt;/i&amp;gt;&amp;quot; , &amp;quot;&amp;lt;u&amp;gt;&amp;quot; , &amp;quot;&amp;lt;/u&amp;gt;&amp;quot; , &amp;quot;&amp;lt;/&amp;quot; , &amp;quot;&amp;gt;&amp;quot; , &amp;quot;&amp;lt;&amp;quot; , &amp;quot;/&amp;gt;&amp;quot; ,&lt;br /&gt;
        &amp;quot;&amp;lt;!-- &amp;quot; , &amp;quot; --&amp;gt;&amp;quot; , &amp;quot;&amp;lt;!--&amp;quot; , &amp;quot;--&amp;gt;&amp;quot; , &lt;br /&gt;
        &amp;quot;/** \n&amp;quot; , &amp;quot;\n */&amp;quot; , &amp;quot;/** \n&amp;quot; , &amp;quot;\n*/&amp;quot; , &amp;quot;/**\n&amp;quot; , &amp;quot;\n */&amp;quot; , &amp;quot;/**\n&amp;quot; , &amp;quot;\n*/&amp;quot; , &lt;br /&gt;
        &amp;quot;/* \n&amp;quot; , &amp;quot;\n */&amp;quot; , &amp;quot;/* \n&amp;quot; , &amp;quot;\n*/&amp;quot; , &amp;quot;/*\n&amp;quot; , &amp;quot;\n */&amp;quot; , &amp;quot;/*\n&amp;quot; , &amp;quot;\n*/&amp;quot; , &lt;br /&gt;
        &amp;quot;/** &amp;quot; , &amp;quot; */&amp;quot; , &amp;quot;/**&amp;quot; , &amp;quot; */&amp;quot; , &amp;quot;/* &amp;quot; , &amp;quot; */&amp;quot; , &amp;quot;/*&amp;quot; , &amp;quot; */&amp;quot; , &lt;br /&gt;
        &amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;quot; , &amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;quot; , &amp;quot;&#039;&#039;&#039;&amp;quot; , &amp;quot;&#039;&#039;&#039;&amp;quot; , &amp;quot;&#039;&#039;&amp;quot; , &amp;quot;&#039;&#039;&amp;quot; , &amp;quot;[[&amp;quot; , &amp;quot;]]&amp;quot; ,  &lt;br /&gt;
        &amp;quot;&amp;lt;nowiki&amp;gt;&amp;quot; , &amp;quot;&amp;lt;/nowiki&amp;gt;&amp;quot; , &amp;quot;&amp;lt;span&amp;gt;&amp;quot; , &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; , &amp;quot;&amp;lt;div&amp;gt;&amp;quot; , &amp;quot;&amp;lt;/div&amp;gt;&amp;quot; , &lt;br /&gt;
        &amp;quot;&amp;lt;pre&amp;gt;&amp;quot; , &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot; , &amp;quot;&amp;lt;source lang=\&amp;quot;javascript\&amp;quot;&amp;gt;&amp;quot; , &amp;quot;&amp;lt;\/source&amp;gt;&amp;quot; &lt;br /&gt;
      ];&lt;br /&gt;
      brackets = brackets2.concat( brackets.split( &amp;quot;&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      var db = DeleteBrackets( st, brackets );&lt;br /&gt;
      if ( st != db ) {&lt;br /&gt;
        s.Text = db;&lt;br /&gt;
        s.SetAnchorPos( tp );	// 選択範囲を復帰する&lt;br /&gt;
      }&lt;br /&gt;
      else {			// テキストに変更なしなら&lt;br /&gt;
        s.SetActivePos( act );	// 選択範囲を復元&lt;br /&gt;
        s.SetAnchorPos( anc );&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // /* * JavaScriptコメントアウト ２ */&lt;br /&gt;
    case 1041:&lt;br /&gt;
/*&lt;br /&gt;
 *     基本的に１行めが行の先頭から始まることしか想定していないので、&lt;br /&gt;
 *       あらかじめコメントアウトする文字列は、行単位でまとまったブロックにしておくとよい。&lt;br /&gt;
 *     選択範囲の先頭／末尾が行の途中にある状態でコメントアウトする場合は、改行を追加する。&lt;br /&gt;
 */&lt;br /&gt;
      var p1 = ( tx &amp;gt; 1 ) ? &amp;quot;\n/*\n&amp;quot; : &amp;quot;/*\n&amp;quot;;		// */&lt;br /&gt;
      var p2 = ( document.Text.charAt( bp ) != &amp;quot;\n&amp;quot; ) ? &amp;quot;\n */\n&amp;quot; : &amp;quot;\n */&amp;quot;;&lt;br /&gt;
      var ast = &amp;quot; * &amp;quot;;&lt;br /&gt;
      if ( tx &amp;gt; 1 ) {	// 選択範囲の先頭座標が x = 1 でなければ改行させるので&lt;br /&gt;
        tp ++;		// 選択範囲の復元用座標を調整&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // コメントアウト&lt;br /&gt;
//    s.Text = CommentOutJS( st, p1, p2, ast );	// コメントアウト（関数バージョン）&lt;br /&gt;
      /*  ※ JS コメントアウト の正規表現置換バージョンの検証は不十分 ※ */ &lt;br /&gt;
      s.Text = p1 + st.replace( /^(.*)$/gm , ast + &amp;quot;$1&amp;quot; ) + p2;&lt;br /&gt;
&lt;br /&gt;
      if ( pos ) {					// 選択範囲がなければ&lt;br /&gt;
        s.SetActivePos( s.GetActivePos() - p2.length );	// カーソルをコメント枠のなかに移動&lt;br /&gt;
      }&lt;br /&gt;
      else {						// 選択範囲があれば&lt;br /&gt;
        s.SetAnchorPos( tp );				// 選択範囲を復元&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* JavaScript コメントアウト １ */&lt;br /&gt;
    // &amp;lt;!-- XML コメントアウト --&amp;gt; &lt;br /&gt;
    case 1042:  case 1044:&lt;br /&gt;
      var p1, p2;&lt;br /&gt;
      if ( r == 1042 ) {			/* JavaScript コメントアウト １ */&lt;br /&gt;
        p1 = &amp;quot; /* &amp;quot;; p2 = &amp;quot; */ &amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      else {	// ( r == 1044 )		// &amp;lt;!-- XML コメントアウト --&amp;gt; &lt;br /&gt;
        p1 = &amp;quot; &amp;lt;!-- &amp;quot;; p2 = &amp;quot; --&amp;gt; &amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if ( pos ) {				// 選択範囲がなければ&lt;br /&gt;
        document.Write( p1 + p2 );		// コメントマーク p1 ＆ p2 だけ挿入&lt;br /&gt;
        s.SetActivePos( pos + p1.length );	// カーソルをコメント枠のなかに移動&lt;br /&gt;
      }&lt;br /&gt;
      else {					// 選択範囲があれば&lt;br /&gt;
        s.Text = p1 + st + p2;			// 選択範囲 st をコメントアウト&lt;br /&gt;
        s.SetAnchorPos( tp );			// 選択範囲を復元&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // JS アンコメント&lt;br /&gt;
      // case 1041 と case 1042: の /* JavaScriptコメント */ をアンコメントする。&lt;br /&gt;
      // 選択範囲内の各行頭のコメントマーク &amp;quot;/* &amp;quot;  と &amp;quot; * &amp;quot; と &amp;quot; */&amp;quot; のみマッチ。&lt;br /&gt;
      // 「カッコで囲う」では行の先頭部分のコメントマークだけにしかマッチしないので、&lt;br /&gt;
      //   コメント部分がインデントされている場合は「引用符／コメント」マクロのJSアンコメントを使うこと。&lt;br /&gt;
/* &lt;br /&gt;
 * ・選択範囲に複数のコメントブロックがある場合を想定していない。&lt;br /&gt;
 * ・中間行の行頭記号はアスタリスク「 * 」、全角中黒「・」、半角中黒「･」を削除対象とする。&lt;br /&gt;
 *   （行頭記号と前後の半角スペース各１を削除する）&lt;br /&gt;
 * ・JSコメントでない箇条書き文で実行した場合も行頭のビュレット「* ・ ･」を削除する。&lt;br /&gt;
 */&lt;br /&gt;
/* このタイプのコメントにたいしてもアンコメント処理する。 */&lt;br /&gt;
&lt;br /&gt;
    // XML アンコメント&lt;br /&gt;
      // case 1044 の &amp;lt;!-- XMLコメント --&amp;gt; をアンコメントする。&lt;br /&gt;
      // 選択範囲の先頭の &amp;quot; &amp;lt;!-- &amp;quot; と 末尾の &amp;quot; --&amp;gt; &amp;quot; のみマッチ。&lt;br /&gt;
      // 選択範囲に複数のコメントがあると正常にアンコメントしない。&lt;br /&gt;
&lt;br /&gt;
    case 1043:  case 1045:&lt;br /&gt;
      // 選択範囲の先頭と末尾のコメントマークを削除&lt;br /&gt;
      var dc;&lt;br /&gt;
//    if ( r == 1043 ) {&lt;br /&gt;
//      dc = UnCommentJS( st );		// JS アンコメント（関数バージョン）&lt;br /&gt;
//    }&lt;br /&gt;
      /*  ※ JS アンコメントの正規表現置換バージョンの検証は不十分 ※ */ &lt;br /&gt;
      if ( r == 1043 ) {		// JS アンコメント（正規表現バージョン）&lt;br /&gt;
        dc = st.replace( /^ ?\/\*+ ?\n?|\n? ?\*+\/ ?$/gm , &amp;quot;&amp;quot; )&lt;br /&gt;
                   .replace( /^ ?(?:\*+|[・･]) ?/gm , &amp;quot;&amp;quot; );&lt;br /&gt;
      }&lt;br /&gt;
      else {	// ( r == 1045 )	// XML アンコメント&lt;br /&gt;
        dc = st.replace( /^ ?&amp;lt;!-+ ?| ?-+ *&amp;gt;\ ?$/g , &amp;quot;&amp;quot; );&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // 選択範囲にコメントマークがなかった場合 undo 履歴を残さない&lt;br /&gt;
      if ( dc == st ) {		// アンコメント処理の前後でテキストが一致したら&lt;br /&gt;
        s.SetActivePos( act );	// 選択範囲を復元&lt;br /&gt;
        s.SetAnchorPos( anc );&lt;br /&gt;
      }&lt;br /&gt;
      else {&lt;br /&gt;
      s.Text = dc;		// アンコメント完了&lt;br /&gt;
      s.SetAnchorPos( tp );	// 選択範囲を復元&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // 任意の文字列を追加	※テキストボックス&lt;br /&gt;
    case 1050:  case 1051:&lt;br /&gt;
      // 文字コードには非対応&lt;br /&gt;
      // ダイアログのテキスト入力フィールドから文字列を取得&lt;br /&gt;
      var p1 = Prompt(&lt;br /&gt;
                  &amp;quot;前につける文字列:\t改行=\\\\\\n ; タブ=\\\\\\t  (注:￥記号３つ)&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;
               ).replace( /\\\\\\n/g , &amp;quot;\n&amp;quot; ).replace( /\\\\\\t/g , &amp;quot;\t&amp;quot; );&lt;br /&gt;
      var p2 = Prompt(&lt;br /&gt;
                  &amp;quot;後ろにつける文字列:\t改行=\\\\\\n ; タブ=\\\\\\t  (注:￥記号３つ)&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;
               ).replace( /\\\\\\n/g , &amp;quot;\n&amp;quot; ).replace( /\\\\\\t/g , &amp;quot;\t&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
      if ( p1 || p2 ) {&lt;br /&gt;
        if ( pos ) {				// 選択範囲がなければ&lt;br /&gt;
          document.Write( p1 + p2 );		//   p1 ＆ p2 を挿入&lt;br /&gt;
          s.SetActivePos( pos + p1.length );	//   カーソルをカッコのなかに移動&lt;br /&gt;
        }&lt;br /&gt;
        else {					// 選択範囲があれば&lt;br /&gt;
          if ( r == 1050 )			//  「任意の文字列１」なら&lt;br /&gt;
            s.Text = p1 + st + p2;		//     選択範囲 st 全体を p1 ＆ p2 で囲う&lt;br /&gt;
          else {	// ( r == 1051 )	//  「任意の文字列２」なら&lt;br /&gt;
            var ab = AddBrackets( st, p1, p2 );	//     選択範囲 st の各行を p1 ＆ p2 で囲う&lt;br /&gt;
            if ( ab != st )&lt;br /&gt;
              s.Text = ab;&lt;br /&gt;
            else		// テキストに変更なし ( skip &amp;amp;&amp;amp; st.match( /^\s*$/g ) )&lt;br /&gt;
              s.SetActivePos( bp );&lt;br /&gt;
          }&lt;br /&gt;
          s.SetAnchorPos( tp );			// 選択範囲を復元&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // 各行の前後から任意の文字数／文字列を削除	※テキストボックス&lt;br /&gt;
    case 1052:  case 1053:&lt;br /&gt;
      if ( ! pos ) {		// 選択範囲があれば&lt;br /&gt;
&lt;br /&gt;
        if ( r == 1052 ) {	// 「任意の 文字数 を削除」なら&lt;br /&gt;
          // ダイアログのテキスト入力フィールドから文字列を取得&lt;br /&gt;
          // ※ 半角に変換して数字以外の文字は削除&lt;br /&gt;
          var p1 = ToHalfWidth(&lt;br /&gt;
                      Prompt( &amp;quot;先頭（行頭）から削除する文字数 （数字のみ有効）:&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
                   ).replace( /[^0-9]/g , &amp;quot;&amp;quot; );	&lt;br /&gt;
          var p2 = ToHalfWidth(&lt;br /&gt;
                      Prompt( &amp;quot;末尾（行末）から削除する文字数 （数字のみ有効）:&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
                   ).replace( /[^0-9]/g , &amp;quot;&amp;quot; );&lt;br /&gt;
          var dt = DeleteCharByNum( st, p1, p2 );	// 各行の先頭/末尾から指定文字数を削除&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        else {	// ( r == 1053 )	// 「任意の 文字列 を削除」なら&lt;br /&gt;
        // ダイアログのテキスト入力フィールドから文字列を取得&lt;br /&gt;
          var p1 = Prompt(&lt;br /&gt;
                      &amp;quot;先頭（行頭）から削除する文字列:\tタブ = \\\\\\ｔ  (￥記号３つ)&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;
                   ).replace( /\\\\\\t/g , &amp;quot;\t&amp;quot; );&lt;br /&gt;
          var p2 = Prompt(&lt;br /&gt;
                      &amp;quot;末尾（行末）から削除する文字列:\tタブ = \\\\\\ｔ  (￥記号３つ)&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;
                   ).replace( /\\\\\\t/g , &amp;quot;\t&amp;quot; );&lt;br /&gt;
          var reg = new RegExp( &amp;quot;^&amp;quot; + Quote( p1 ) + &amp;quot;|&amp;quot; + Quote( p2 ) + &amp;quot;$&amp;quot;, &amp;quot;gm&amp;quot; );&lt;br /&gt;
          dt = st.replace( reg , &amp;quot;&amp;quot; );	// 各行の先頭/末尾の指定文字列を削除&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // 選択範囲に指定文字列がなかった場合 undo 履歴を残さない&lt;br /&gt;
        if ( dt != st ) {&lt;br /&gt;
          s.Text = dt;			// 削除完了&lt;br /&gt;
          s.SetAnchorPos( tp );		// 選択範囲を復元&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // アウトプット ／ アラート ／ コンファーム ／ ステータス&lt;br /&gt;
    /**&lt;br /&gt;
     * 選択範囲の文字列 st をコピーして、１行下に&lt;br /&gt;
     * OutputBar.Writeln( &amp;quot;st&amp;quot; );&lt;br /&gt;
     * Alert( &amp;quot;st&amp;quot; );&lt;br /&gt;
     * Confirm( &amp;quot;st&amp;quot; );&lt;br /&gt;
     * Status = &amp;quot;st&amp;quot;;&lt;br /&gt;
     * の行を追加する → 追加した行の移動は「行を上/下に移動」マクロで…&lt;br /&gt;
     */&lt;br /&gt;
    case 1060:  case 1061:  case 1062:  case 1063:&lt;br /&gt;
      s.SetActivePoint( mePosLogical, 1, by + 1 );&lt;br /&gt;
      // 選択範囲が複数行なら +&amp;quot;\n&amp;quot;+ でつなぐ&lt;br /&gt;
      var str = &#039;&amp;quot;&#039; + st.replace( /\n/g , &#039;&amp;quot; + &amp;quot;\\n&amp;quot; + &amp;quot;&#039; ) + &#039;&amp;quot;&#039;;&lt;br /&gt;
      var sur = ( ( r == 1063 ) ? &amp;quot;;&amp;quot; : &amp;quot; );&amp;quot; ) + &amp;quot;\n&amp;quot;;&lt;br /&gt;
      s.Text = ( ( r == 1060 ) ? &amp;quot;OutputBar.Writeln( &amp;quot; :&lt;br /&gt;
                 ( r == 1061 ) ? &amp;quot;Alert( &amp;quot; :&lt;br /&gt;
                 ( r == 1062 ) ? &amp;quot;Confirm( &amp;quot; :&lt;br /&gt;
                /* r == 1063 */  &amp;quot;Status = &amp;quot;&lt;br /&gt;
               ) + str + sur;&lt;br /&gt;
      // カッコの中の文字列を範囲選択する&lt;br /&gt;
      s.SetActivePos( s.GetActivePos() - sur.length );&lt;br /&gt;
      s.SetAnchorPos( s.GetActivePos() - str.length );&lt;br /&gt;
      // アウトプットの場合は、アウトプットバーを表示&lt;br /&gt;
      if ( r == 1060 ) {&lt;br /&gt;
        ScrollY = s.GetActivePointY( mePosView );&lt;br /&gt;
        OutputBar.Visible = true;&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    default:&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// -----------------------------------------------&lt;br /&gt;
// 関数&lt;br /&gt;
// -----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
/* 関数 AddBrackets() */&lt;br /&gt;
function AddBrackets( arg0, arg1, arg2 ) {	// AddBrackets( st, p1[r], p2[r] )&lt;br /&gt;
  var a = arg0.split( &amp;quot;\n&amp;quot; );			// 選択範囲 st を &amp;quot;\n&amp;quot; で区切って配列 a に&lt;br /&gt;
  for ( var i = 0; i &amp;lt; a.length; i ++ ) {&lt;br /&gt;
    if ( ! pos &amp;amp;&amp;amp; skip &amp;amp;&amp;amp; a[i].match( /^\s*$/g ) ) {&lt;br /&gt;
      continue;		// skip = true のときは、空白行をスキップ&lt;br /&gt;
    }&lt;br /&gt;
    // 空行にカッコを挿入する場合は全角スペースをはさむ&lt;br /&gt;
    var space = ( ( arg1.length &amp;amp;&amp;amp; arg2.length ) &amp;amp;&amp;amp; ( pos || ! a[i].length ) ) ? &amp;quot;　&amp;quot; : &amp;quot;&amp;quot; ;&lt;br /&gt;
    a[i] = arg1 + space + a[i] + arg2;		// 各行をカッコ p1 ＆ p2 で囲う&lt;br /&gt;
  }&lt;br /&gt;
  return a.join( &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 関数 AddWikiLink() */&lt;br /&gt;
function AddWikiLink( arg0, arg1, arg2 ) {	// AddWikiLink( st, p1[r], p2[r] )&lt;br /&gt;
  var a = arg0.split( &amp;quot;\n&amp;quot; );			// 選択範囲 st を &amp;quot;\n&amp;quot; で区切って配列 a に&lt;br /&gt;
  for ( var i = 0; i &amp;lt; a.length; i ++ ) {&lt;br /&gt;
    if ( ! pos &amp;amp;&amp;amp; skip &amp;amp;&amp;amp; a[i].match( /^\s*$/g ) ) {&lt;br /&gt;
      continue;		// skip = true のときは、空白行をスキップ&lt;br /&gt;
    }&lt;br /&gt;
    // 空行には全角スペースつきではさむ&lt;br /&gt;
    var bar = ( pos || ! a[i].length ) ? &amp;quot;　|　&amp;quot; : &amp;quot;|&amp;quot; ;&lt;br /&gt;
    a[i] =  arg1 + a[i] + bar + a[i] + arg2;	// 各行を [[str|str]] に置換&lt;br /&gt;
  }&lt;br /&gt;
  return a.join( &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 関数 DeleteCharByNum( st, p1, p2 ) */&lt;br /&gt;
function DeleteCharByNum( str, p1, p2 ) {&lt;br /&gt;
  var a = str.split( &amp;quot;\n&amp;quot; );&lt;br /&gt;
  for ( var i = 0; i &amp;lt; a.length; i ++ ) {&lt;br /&gt;
    a[i] = a[i].slice( p1, a[i].length - p2 );	// 各行の先頭/末尾からの指定文字数を削除&lt;br /&gt;
  }&lt;br /&gt;
  return a.join( &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 関数 DeleteBrackets( str, brackets ) */&lt;br /&gt;
// 選択範囲の先頭と末尾から１組のカッコを削除する&lt;br /&gt;
function DeleteBrackets( str, brackets ) {&lt;br /&gt;
  // ループ処理で「対になるカッコ」と一致するかチェック&lt;br /&gt;
  for ( var i = 0, len = brackets.length; i &amp;lt; len; i ++ ) {&lt;br /&gt;
    if ( i % 2 == 1 || ! brackets[i].length ) {&lt;br /&gt;
      continue;&lt;br /&gt;
    }&lt;br /&gt;
    var o = brackets[ i ];	// 開きカッコ&lt;br /&gt;
    var c = brackets[ i + 1 ];	// 閉じカッコ&lt;br /&gt;
&lt;br /&gt;
    // 選択範囲内の先頭と末尾が「対になるカッコ」のとき&lt;br /&gt;
    if ( str.length &amp;gt;= o.length + c.length&lt;br /&gt;
        &amp;amp;&amp;amp; str.slice( 0, o.length ) == o&lt;br /&gt;
        &amp;amp;&amp;amp; str.slice( - c.length ) == c ) {&lt;br /&gt;
      str = str.slice( o.length, - c.length );	// 先頭/末尾のカッコを削除&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }	// end for&lt;br /&gt;
  return str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 関数 quote( str ) */&lt;br /&gt;
// 『JavaScript/正規表現 - Wikibooks』より&lt;br /&gt;
// https://ja.wikibooks.org/wiki/JavaScript/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE&lt;br /&gt;
// &lt;br /&gt;
// PerlのquotemetaやRubyのRegExp.quoteのように、()や[]など正規表現のメタ文字と解釈される可能性のある文字をエスケープして返す関数は、Stringオブジェクトのreplaceメソッドを使用して簡単に作成することができます。&lt;br /&gt;
function Quote( str ) {&lt;br /&gt;
    return str.replace( /\W/g, function( $0 ) {&lt;br /&gt;
        return &#039;\\&#039; + $0;&lt;br /&gt;
    } );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 全角から半角への変革関数 toHalfWidth( strVal )&lt;br /&gt;
 * 入力値の英数記号を半角変換して返却&lt;br /&gt;
 * [引数]   strVal: 入力値&lt;br /&gt;
 * [返却値] String(): 半角変換された文字列&lt;br /&gt;
 */&lt;br /&gt;
// https://webllica.com/add-comma-as-thousands-separator/ より&lt;br /&gt;
function ToHalfWidth( strVal ){&lt;br /&gt;
  // 半角変換&lt;br /&gt;
  var halfVal = strVal.replace( /[！-～]/g,&lt;br /&gt;
    function( tmpStr ) {&lt;br /&gt;
      // 文字コードをシフト&lt;br /&gt;
      return String.fromCharCode( tmpStr.charCodeAt(0) - 0xFEE0 );&lt;br /&gt;
    }&lt;br /&gt;
  );&lt;br /&gt;
  return halfVal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ----------------------------------------------- &lt;br /&gt;
// 以下の２つの関数は破棄してよいかも&lt;br /&gt;
// （switch - case 文の中で replace メソッドでの置換処理に変更した）&lt;br /&gt;
// -----------------------------------------------&lt;br /&gt;
/* &lt;br /&gt;
 * 関数 CommentOutJS()&lt;br /&gt;
 * このかたちにコメントアウトする&lt;br /&gt;
 */&lt;br /&gt;
function CommentOutJS( arg1, arg2, arg3, arg4 ) {&lt;br /&gt;
  var a = arg1.split( &amp;quot;\n&amp;quot; );			// 選択範囲 st を &amp;quot;\n&amp;quot; で区切って配列 a に&lt;br /&gt;
  for ( var i = 0; i &amp;lt; a.length; i ++ )		// 「１行め」から繰りかえし処理&lt;br /&gt;
    a[i] = arg4 + a[i];				// 各行の先頭に &amp;quot; * &amp;quot; を追加する&lt;br /&gt;
&lt;br /&gt;
  // 各行を &amp;quot;\n&amp;quot; で区切って連結し、先頭に &amp;quot;/*\n&amp;quot;、末尾に &amp;quot;\n */&amp;quot; を追加する&lt;br /&gt;
  return arg2 + a.join( &amp;quot;\n&amp;quot; ) + arg3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* &lt;br /&gt;
 * 関数 UnCommentJS( arg1 ) &lt;br /&gt;
 * 基本的にこのかたちのコメントブロックしか想定していない（インデントには非対応）。&lt;br /&gt;
 * また、複数のコメントブロックがある場合を想定していない。&lt;br /&gt;
 * 中間行の行頭記号はアスタリスク「*」と中黒「・」「･」を削除対象とする。&lt;br /&gt;
 */ &lt;br /&gt;
function UnCommentJS( arg1 ) {&lt;br /&gt;
&lt;br /&gt;
  var re1 = &amp;quot;^ ?\\/\\*+ ?\\n?&amp;quot;;			// 先頭行のコメントマークの正規表現&lt;br /&gt;
  var re2 = &amp;quot;\\n? ?\\*+\\/ ?$&amp;quot;;			// 末行のコメントマークの正規表現&lt;br /&gt;
  var reg = new RegExp( re1 + &amp;quot;|&amp;quot; + re2 , &amp;quot;g&amp;quot; );	// 正規表現 / … /g に変換&lt;br /&gt;
  var re3 = /^ ?(\*+|[･・]) ?/;			// 中間行の行頭記号の正規表現&lt;br /&gt;
  var a = arg1.split( &amp;quot;\n&amp;quot; );			// 選択範囲 st を &amp;quot;\n&amp;quot; で区切って配列 a に&lt;br /&gt;
&lt;br /&gt;
  // 中間行の行頭記号を削除する&lt;br /&gt;
  for ( var i = 0; i &amp;lt; a.length; i ++ ) {	// 「１行め」から繰りかえし処理&lt;br /&gt;
    if ( a[i].match( reg ) )			// 先頭行と末行のコメントマークがある行はスキップ&lt;br /&gt;
      continue;&lt;br /&gt;
    a[i] = a[i].replace( re3 , &amp;quot;&amp;quot; );		// 中間行の行頭記号を削除&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 各行を &amp;quot;\n&amp;quot; で区切って連結し、先頭行と末行のコメントマークを削除&lt;br /&gt;
  return a.join( &amp;quot;\n&amp;quot; ).replace( reg , &amp;quot;&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= カッコで囲う (ポップアップメニューなし) =&lt;br /&gt;
(最終更新 2018/10/26）&lt;br /&gt;
&lt;br /&gt;
簡易版です。 &amp;lt;br&amp;gt;&lt;br /&gt;
: &#039;&#039;c.f.&#039;&#039;  追加と削除ができる機能強化版 → 「[[#引用符を追加／削除|引用符を追加／削除]]」&lt;br /&gt;
&lt;br /&gt;
特定の種類のカッコを一発で追加する小マクロは[[キーアサイン集#括弧で挟む|キーアサイン集]]にもありますが、コードを改変して前後に付ける &amp;quot;カッコ&amp;quot; のかわりに &amp;quot;任意の文字列&amp;quot; を指定するばあいに「折り返し」表示と相性のよくない部分があります。&lt;br /&gt;
&lt;br /&gt;
また、マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲なし&#039;&#039;&#039;のときと&#039;&#039;&#039;選択範囲あり&#039;&#039;&#039;のときとで変えたいばあいも、こちらのコードがよいでしょう。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;( カッコ )&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;( カッコ ) で囲う&amp;quot;&lt;br /&gt;
// MeryWiki の マクロライブラリ &amp;gt;&amp;gt; キーアサイン集 の「括弧で挟む」を改変&lt;br /&gt;
// 選択範囲の前後にカッコ以外にも任意の文字列を追加するマクロとしても流用できます&lt;br /&gt;
&lt;br /&gt;
var s = document.selection;&lt;br /&gt;
&lt;br /&gt;
// 選択範囲の各座標を取得&lt;br /&gt;
var ax = s.GetTopPointX( mePosLogical );&lt;br /&gt;
var ay = s.GetTopPointY( mePosLogical );&lt;br /&gt;
&lt;br /&gt;
// 選択範囲のテキストを取得し、カッコを追加&lt;br /&gt;
var st = s.Text;&lt;br /&gt;
var pre = &amp;quot;(&amp;quot;;	// 前に付ける文字列&lt;br /&gt;
var sur = &amp;quot;)&amp;quot;;	// 後ろに付ける文字列&lt;br /&gt;
s.Text = pre + st + sur;&lt;br /&gt;
&lt;br /&gt;
// カーソルを移動、または範囲選択&lt;br /&gt;
if ( ! st )	// 選択範囲なしだったばあい&lt;br /&gt;
  s.SetActivePos( s.GetActivePos() - sur.length );	// 後ろに付けた文字列 sur の前にカーソルを移動&lt;br /&gt;
else	// 選択範囲があったばあい&lt;br /&gt;
  s.SetAnchorPoint( mePosLogical, ax, ay );	// カッコを含めて範囲選択&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 引用符を追加／削除 =&lt;br /&gt;
(最終更新 2019/04/07）&lt;br /&gt;
&lt;br /&gt;
「[[#カッコで囲う (ポップアップメニューなし)|カッコで囲う (ポップアップメニューなし)]]」の機能強化版です。&lt;br /&gt;
&lt;br /&gt;
”引用符” を一発で追加する小マクロは 「マテリアルデザインっぽいアイコンと『小マクロ集』」 の 「[[マテリアルデザインっぽいアイコンと『小マクロ集』#”引用符”を追加|”引用符”を追加]]」 にもありますが、こちらのマクロでは 「引用符（または指定した文字列）で囲う」操作と「囲っている引用符を削除する」操作を&#039;&#039;&#039;トグル&#039;&#039;&#039;できます。&amp;lt;br&amp;gt; ※ 後ろにつける文字列の末尾が &amp;quot;&#039;&#039;&#039;\n&#039;&#039;&#039;&amp;quot; の場合はトグル不可。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;選択範囲の外側&#039;&#039;&#039;（前と後ろ）が ”引用符” の場合も、（自動的に検出して）削除することができます。&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 文字列指定は ”引用符” 以外の &#039;&#039;&#039;カッコ&#039;&#039;&#039; や &#039;&#039;&#039;HTML タグ&#039;&#039;&#039; などの任意の文字列に変更できます。&lt;br /&gt;
&lt;br /&gt;
* 選択範囲が複数行（論理行）にまたがっている場合に、&#039;&#039;&#039;選択範囲全体&#039;&#039;&#039; を一組の ”引用符” で囲うか、選択範囲内の「&#039;&#039;&#039;各行ごと&#039;&#039;&#039;」に ”引用符” で囲うかを選択することもできます。&lt;br /&gt;
&lt;br /&gt;
* マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲なし&#039;&#039;&#039;のときと&#039;&#039;&#039;選択範囲あり&#039;&#039;&#039;のときとで変えたい場合には、数種類のパターンから選択できるようになっています。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
カッコの追加／削除トグルの姉妹版マクロとして [[カッコをはずす|「カッコを削除／追加」、「カッコを追加／削除」]]があります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;height:80em; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;&#039;&#039;引用符&#039;&#039; で囲う&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;ダブルクォーテーションで囲う&amp;quot;&lt;br /&gt;
// #language = &amp;quot;JScript&amp;quot;&lt;br /&gt;
// #icon = &amp;quot;Mery用 マテリアルデザインっぽいアイコン.icl&amp;quot;,100&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * -----------------------------------------------&lt;br /&gt;
 * &amp;quot;引用符&amp;quot; で囲う&lt;br /&gt;
 * sukemaru (2018/10/19 - 2019/04/07)&lt;br /&gt;
 * -----------------------------------------------&lt;br /&gt;
 * 選択範囲を指定の文字列（&amp;quot;引用符&amp;quot;）で囲う&lt;br /&gt;
 * 選択範囲がすでに &amp;quot;引用符&amp;quot; で囲われていたら引用符ふたつ &amp;quot;&amp;quot; を削除する&lt;br /&gt;
 * 選択範囲外側の外側が &amp;quot;引用符&amp;quot; のときも削除できる&lt;br /&gt;
 * 選択範囲が複数行のとき、さいごの改行はふくめない&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// ---------- ▼ 設定項目 ▼ ----------&lt;br /&gt;
&lt;br /&gt;
var pre = &#039;&amp;quot;&#039;;		// 前に付ける文字列&lt;br /&gt;
var sur = &#039;&amp;quot;&#039;;		// 後に付ける文字列&lt;br /&gt;
  /**&lt;br /&gt;
   * ■&amp;quot;引用符&amp;quot; の文字列を指定&lt;br /&gt;
   *&lt;br /&gt;
   * ※ 文字列をダブルクォーテーション &amp;quot;&amp;quot; で囲うなら、中の「 &amp;quot; 」は要エスケープ 「&#039;&amp;quot;&#039;」=&amp;gt; 「&amp;quot;\&amp;quot;&amp;quot;」&lt;br /&gt;
   * ※ 引用符以外の文字列を指定するなら 「&#039;&amp;quot;&#039;」=&amp;gt; 「&amp;quot;ほげ&amp;quot;」「&amp;quot;ふが&amp;quot;」&lt;br /&gt;
   *   ただし、改行 \n を含む文字列は想定していない（カーソル位置の復帰が…）。&lt;br /&gt;
   * ※ 片側しか必要ないならいずれかを 「&#039;&amp;quot;&#039;」=&amp;gt; 「&amp;quot;&amp;quot;」にしてよいが、実行後のカーソルの復帰位置が…&lt;br /&gt;
   */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var deleteOuter = true;&lt;br /&gt;
  /**&lt;br /&gt;
   *  ■外側削除フラグ &lt;br /&gt;
   *&lt;br /&gt;
   * ・false で選択範囲内側の先頭/末尾の文字列 pre / sur のみを削除。&lt;br /&gt;
   * ・true で選択範囲外側の前後の文字列 pre / sur も削除対象にする。&lt;br /&gt;
   * ※ 「複数行フラグ」の true / false によらず、選択範囲全体の外側が対象。&lt;br /&gt;
   */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var multiLine = true;&lt;br /&gt;
  /**&lt;br /&gt;
   * ■複数行フラグ&lt;br /&gt;
   *&lt;br /&gt;
   * ・false で選択範囲「全体」の前後に文字列 pre / sur を追加&lt;br /&gt;
   * ・true で選択範囲の「各行」ごとに文字列 pre / sur で囲う&lt;br /&gt;
   */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var insert = false;&lt;br /&gt;
  /**&lt;br /&gt;
   * ■挿入フラグ&lt;br /&gt;
   *&lt;br /&gt;
   * ・false では、選択範囲がないときはマクロを中止する&lt;br /&gt;
   *   また、「複数行フラグ」が有効のときに、空行には挿入しない&lt;br /&gt;
   *   選択範囲の末尾に空行があった場合、マクロ実行後のカーソルの復帰位置が&lt;br /&gt;
   *   「終了後フラグ」の説明どおりにならないことがある&lt;br /&gt;
   * ・true では、選択範囲がないときにはカーソル位置に pre / sur を挿入する&lt;br /&gt;
   *   また、「複数行フラグ」が有効のときに、空行にも挿入する&lt;br /&gt;
   * ※ 「複数行フラグ」が有効 のときは、空白文字だけの行は空行と見做す&lt;br /&gt;
   */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var endPos = 5;		// 指定できる値は 0 ～ 5 （ 6 以上の値は 0 と同じ）&lt;br /&gt;
  /**&lt;br /&gt;
   * ■終了後フラグ &lt;br /&gt;
   *&lt;br /&gt;
   * 0. カーソルは &amp;quot;引用符&amp;quot; の後ろへ。  (※範囲選択なし)&lt;br /&gt;
   * 1. カーソルは最後の &amp;quot;引用符&amp;quot; の中へ移動する。  (※範囲選択なし)&lt;br /&gt;
   * 2. マクロ実行前に範囲選択がなければカーソルは最後の &amp;quot;引用符&amp;quot; の中へ。  (※要 「挿入フラグ」 = true)&lt;br /&gt;
   *    あれば &amp;quot;引用符&amp;quot; の後ろへ移動する。  (※範囲選択なし)&lt;br /&gt;
   * 3. マクロ実行前に範囲選択がなければカーソルは最後の &amp;quot;引用符&amp;quot; の中へ移動。  (※範囲選択なし)、&lt;br /&gt;
   *    あれば &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする。  (※カーソルは選択範囲の後ろへ) &lt;br /&gt;
   * 4. &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする。  (※カーソルは選択範囲の後ろへ) &lt;br /&gt;
   * 5. &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする。  (※カーソル位置はマクロ実行前の側（先頭 or 末尾）へ)&lt;br /&gt;
   * &lt;br /&gt;
   *   ※ &amp;quot;引用符&amp;quot; を含めた選択範囲を残すようにすると、&lt;br /&gt;
   *     連続実行で 追加 &amp;lt;=&amp;gt; 削除 のトグルができる。（ 3 ～ 5 ）&lt;br /&gt;
   *     ただし、後に付ける文字列の末尾が &amp;quot;\n&amp;quot; の場合、連続実行での 追加 &amp;lt;=&amp;gt; 削除 のトグルはできない。&lt;br /&gt;
   *   ※ &amp;quot;マクロ実行前に範囲選択がなければ～&amp;quot; は「挿入フラグ」が有効のときだけ。&lt;br /&gt;
   *   ※ 選択範囲を残す場合、マクロ実行前の選択範囲末尾に改行 \n を含んでいたときには&lt;br /&gt;
   *   ※ 「複数フラグ」が有効のとき、 &amp;quot;引用符&amp;quot; の中へ移動する「0 と 1」は適さないとおもわれる。&lt;br /&gt;
   *   ※ &amp;quot;範囲選択なし&amp;quot; になる「終了後フラグ」で &amp;quot;引用符&amp;quot; を削除したとき、&lt;br /&gt;
   *      カーソルの復帰位置は上の説明どおりにはならないことがある。&lt;br /&gt;
   */&lt;br /&gt;
&lt;br /&gt;
// ---------- ▲ 設定項目 ▲ ----------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var d = document;&lt;br /&gt;
var s = document.selection;	// 選択範囲&lt;br /&gt;
&lt;br /&gt;
if ( d.ReadOnly ) {&lt;br /&gt;
  Status = &amp;quot;　ドキュメントは書き換え禁止です。&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// 挿入フラグが無効 ( insert = false ) で 選択範囲がないなら中止&lt;br /&gt;
else if ( ! insert &amp;amp;&amp;amp; s.IsEmpty ) {&lt;br /&gt;
  Status = &amp;quot;　選択範囲がありません。&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 選択範囲がある または 挿入フラグが有効 ( s.length || insert = true ) なら ～&lt;br /&gt;
else {&lt;br /&gt;
  Redraw = false;&lt;br /&gt;
&lt;br /&gt;
  var delCount = 0;		// 削除フラグ&lt;br /&gt;
  var addCount = 0;		// 追加フラグ&lt;br /&gt;
  var isAdjusted = false;	// 末尾調整フラグ&lt;br /&gt;
&lt;br /&gt;
  // 選択範囲の各座標&lt;br /&gt;
  var anc = s.GetAnchorPos();&lt;br /&gt;
  var act = s.GetActivePos();&lt;br /&gt;
  var tp = ( anc &amp;lt; act ) ? anc : act;	// 選択範囲の先頭位置&lt;br /&gt;
  var bp = ( anc &amp;lt; act ) ? act : anc;	// 選択範囲の末尾位置&lt;br /&gt;
  // var ty = s.GetTopPointY( mePosLogical );&lt;br /&gt;
  var bx = s.GetBottomPointX( mePosLogical );&lt;br /&gt;
  var by = s.GetBottomPointY( mePosLogical );&lt;br /&gt;
&lt;br /&gt;
  // 選択範囲の末尾が行頭 x = 1 にあるときの調整（末尾の改行を含めない）&lt;br /&gt;
  if ( tp &amp;lt; bp &amp;amp;&amp;amp; bx == 1 ) {&lt;br /&gt;
    s.SetActivePos( tp );&lt;br /&gt;
    s.SetAnchorPos( bp - 1 );&lt;br /&gt;
    isAdjusted = true;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 選択範囲の文字列を取得&lt;br /&gt;
  var st = s.Text;&lt;br /&gt;
&lt;br /&gt;
  // 外側フラグが有効のとき&lt;br /&gt;
  if ( deleteOuter ) {&lt;br /&gt;
    // 選択範囲外側の前後の文字列が &amp;quot;引用符&amp;quot; なら削除する&lt;br /&gt;
    // ※削除したときの戻り値は delCount = 1&lt;br /&gt;
    delCount = DeleteOuterBrackets( st, pre, sur );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // AddDelBrackets() で &amp;quot;引用符&amp;quot; を追加／削除&lt;br /&gt;
  if ( ! delCount ) {&lt;br /&gt;
    var ad = AddDelBrackets( st, pre, sur );&lt;br /&gt;
    if ( delCount || addCount ) {&lt;br /&gt;
      s.Text = ad;&lt;br /&gt;
    }&lt;br /&gt;
    // AddDelBrackets() 処理の前後で文字列に変化がないなら&lt;br /&gt;
    // 選択範囲を復帰する（undo 履歴を残さない）&lt;br /&gt;
    else {&lt;br /&gt;
      s.SetActivePos( act );&lt;br /&gt;
      s.SetAnchorPos( anc );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( s.IsEmpty ) {&lt;br /&gt;
    // カーソルは &amp;quot;引用符&amp;quot; のうしろ&lt;br /&gt;
    var dp = s.GetActivePos();&lt;br /&gt;
    // 終了後フラグの指定動作  ※カーソルを移動／選択範囲を復旧&lt;br /&gt;
    FinalSelection();	&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Redraw = true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ---------- ▼ 関数 ▼ ----------&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 FinalSelection() &lt;br /&gt;
 *   終了後フラグの指定動作  ※カーソルを移動／選択範囲を復旧&lt;br /&gt;
 *   0. カーソルは &amp;quot;引用符&amp;quot; の後ろへ。  (※範囲選択なし)&lt;br /&gt;
 *   1. カーソルは最後の &amp;quot;引用符&amp;quot; の中へ移動する。  (※範囲選択なし)&lt;br /&gt;
 *   2. マクロ実行前に範囲選択がなければカーソルは最後の &amp;quot;引用符&amp;quot; の中へ。  (※要 挿入フラグ = true)&lt;br /&gt;
 *   あれば &amp;quot;引用符&amp;quot; の後ろへ移動する。  (※範囲選択なし)&lt;br /&gt;
 *   3. マクロ実行前に範囲選択がなければカーソルは最後の &amp;quot;引用符&amp;quot; の中へ移動。  (※範囲選択なし)、&lt;br /&gt;
 *   あれば &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする。  (※カーソルは選択範囲の後ろへ) &lt;br /&gt;
 *   4. &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする。  (※カーソルは選択範囲の後ろへ) &lt;br /&gt;
 *   5. &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする。  (※カーソル位置はマクロ実行前の側（先頭 or 末尾）へ)&lt;br /&gt;
 */&lt;br /&gt;
function FinalSelection() {&lt;br /&gt;
  // 0. カーソルは &amp;quot;引用符&amp;quot; のうしろ &lt;br /&gt;
  // ※範囲選択なし（末尾調整されたままの位置）&lt;br /&gt;
  switch ( endPos ) {&lt;br /&gt;
&lt;br /&gt;
    // 1. カーソルは &amp;quot;引用符&amp;quot; の中へ移動する  ※範囲選択なし&lt;br /&gt;
    case 1:&lt;br /&gt;
      SearchCloseBracket ();&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    // 2. マクロ実行前に範囲選択がなければカーソルは &amp;quot;引用符&amp;quot; の中へ&lt;br /&gt;
    //    あれば選択範囲の後ろへ移動する  ※範囲選択なし&lt;br /&gt;
    case 2:&lt;br /&gt;
      // マクロ実行前に選択範囲がなかったとき → case 1 と同じ&lt;br /&gt;
      if ( ! st ) {&lt;br /&gt;
        SearchCloseBracket();&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    // 3. マクロ実行前に範囲選択がなければカーソルは &amp;quot;引用符&amp;quot; の中へ移動  ※範囲選択なし&lt;br /&gt;
    //    あれば &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする  ※カーソルは選択範囲の後ろへ&lt;br /&gt;
    case 3:&lt;br /&gt;
      // マクロ実行前に選択範囲がなかったとき → case 1 と同じ&lt;br /&gt;
      if ( ! st ) {&lt;br /&gt;
        SearchCloseBracket();&lt;br /&gt;
      }&lt;br /&gt;
      // マクロ実行前に選択範囲があったとき → case 2 と同じ&lt;br /&gt;
      else {&lt;br /&gt;
        MoveToEndPos();&lt;br /&gt;
        s.SetAnchorPos( tp );	// 先頭まで範囲選択&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    // 4. &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする &lt;br /&gt;
    // ※カーソルは選択範囲の後ろへ（末尾位置を復帰）&lt;br /&gt;
    case 4:&lt;br /&gt;
      MoveToEndPos();&lt;br /&gt;
      s.SetAnchorPos( tp );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    // 5. &amp;quot;引用符&amp;quot; を含めた全体を選択範囲にする（末尾位置を復帰）&lt;br /&gt;
    // ※カーソル位置はマクロ実行前の側（先頭 or 末尾）へ&lt;br /&gt;
    case 5:&lt;br /&gt;
      MoveToEndPos();&lt;br /&gt;
      // マクロ実行前のキャレットの位置が末尾だったとき&lt;br /&gt;
      if ( anc &amp;lt;= act ) {&lt;br /&gt;
        s.SetAnchorPos( tp );&lt;br /&gt;
      }&lt;br /&gt;
      // マクロ実行前のキャレットの位置が先頭だったとき&lt;br /&gt;
      else {	&lt;br /&gt;
        s.SetActivePos( tp, true );&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    default:&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 関数 AddDelBrackets() */ &lt;br /&gt;
function AddDelBrackets( str, o, c ) {	// ← AddDelBrackets( st, pre, sur )&lt;br /&gt;
&lt;br /&gt;
  // ■複数行フラグ ( multiLine ) にしたがい選択範囲 st を配列 a に&lt;br /&gt;
  var a = ( multiLine ) ? str.split( &amp;quot;\n&amp;quot; ) : [ str ];&lt;br /&gt;
&lt;br /&gt;
  for ( var i = 0, len = a.length; i &amp;lt; len; i ++ ) {&lt;br /&gt;
&lt;br /&gt;
    // 選択範囲がカッコで囲われているときは、各行のカッコを削除&lt;br /&gt;
    if ( a[i].slice( 0, o.length ) == o&lt;br /&gt;
        &amp;amp;&amp;amp; a[i].slice( - c.length ) == c ) {&lt;br /&gt;
      a[i] = a[i].slice( o.length, a[i].length - c.length );&lt;br /&gt;
      delCount ++;	// 削除フラグ&lt;br /&gt;
    }&lt;br /&gt;
    // 選択範囲がカッコで囲われていないとき&lt;br /&gt;
    // 挿入フラグが有効ならカッコをつける&lt;br /&gt;
    else if ( insert || ! a[i].match( /^[\s　]*$/g ) ) {&lt;br /&gt;
      a[i] = o + a[i] + c;&lt;br /&gt;
      addCount ++;	// 追加フラグ&lt;br /&gt;
    }&lt;br /&gt;
    // 挿入フラグが無効のときの空白行はスルー&lt;br /&gt;
    else {&lt;br /&gt;
      continue;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return a.join( &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 関数 DeleteOuterBrackets() */ 	// ← DeleteOuterBrackets( st, pre, sur )&lt;br /&gt;
function DeleteOuterBrackets( str, o, c ) {&lt;br /&gt;
&lt;br /&gt;
  // 選択範囲外側の前後の文字列が &amp;quot;引用符&amp;quot; なら削除する&lt;br /&gt;
  if ( d.Text.slice( tp - o.length, tp ) == o&lt;br /&gt;
      &amp;amp;&amp;amp; d.Text.slice( bp, bp + c.length ) == c ) {&lt;br /&gt;
    s.SetActivePos( tp - o.length );&lt;br /&gt;
    s.SetAnchorPos( bp + c.length );&lt;br /&gt;
    s.Text = s.Text.slice( o.length, - c.length );&lt;br /&gt;
&lt;br /&gt;
    tp = tp - o.length;		// 先頭の座標を調整&lt;br /&gt;
    delCount ++;&lt;br /&gt;
  }&lt;br /&gt;
  return delCount;		// 戻り値として削除フラグを返す&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 関数 SearchCloseBracket() */ &lt;br /&gt;
// カーソルを最後の閉じカッコの前へ移動  ※範囲選択なし&lt;br /&gt;
// ※閉じカッコ sur が未指定 &amp;quot;&amp;quot; の場合は、末尾のまま&lt;br /&gt;
function SearchCloseBracket() {&lt;br /&gt;
  if ( delCount ) {&lt;br /&gt;
    // カッコを削除したときは、末尾のまま&lt;br /&gt;
    s.SetActivePos( dp );&lt;br /&gt;
  }&lt;br /&gt;
  else if ( addCount ) {&lt;br /&gt;
    // カッコを追加したときは、選択範囲内の最後の閉じカッコの前へ&lt;br /&gt;
    s.SetActivePos( dp - sur.length );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 関数 MoveToEndPos() */ &lt;br /&gt;
// マクロ実行前に選択範囲があったとき、カーソルを元の選択範囲の末尾位置へ移動 &lt;br /&gt;
// ※範囲選択なし&lt;br /&gt;
function MoveToEndPos() {&lt;br /&gt;
  // 選択範囲の末尾調整をしていたときは、カーソルを元の末尾位置に復帰&lt;br /&gt;
  if ( isAdjusted ) {&lt;br /&gt;
    s.SetActivePoint( mePosLogical, 1, by );&lt;br /&gt;
  }&lt;br /&gt;
  // 末尾調整をしていなかったときは、カーソル位置はそのまま&lt;br /&gt;
  else {&lt;br /&gt;
    s.SetActivePos( dp );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 記&lt;br /&gt;
*「引用符を追加／削除」の項目を追加 (2018/10/18 sukemaru)&lt;br /&gt;
* 終了後の動作コードを変更し、不自然な位置にキャレットが移動する不具合を修正した (2018/10/26 sukemaru)&lt;br /&gt;
* 選択範囲の外側の引用符の削除に対応。終了時のカーソルの位置、範囲選択の動作を修正 (2019/03/28 sukemaru)&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= メモ =&lt;br /&gt;
&lt;br /&gt;
== JS コメントアウトについて ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;&#039;/* &#039;&#039;&#039;&amp;quot;　と　&amp;quot;&#039;&#039;&#039; */&#039;&#039;&#039;&amp;quot;　と　&amp;quot;&#039;&#039;&#039; * &#039;&#039;&#039;&amp;quot;　で複数行のブロックコメントをつくる機能は、&amp;lt;br&amp;gt; &lt;br /&gt;
姉妹版の「[[引用符／コメント]]」マクロにもあります。&lt;br /&gt;
&lt;br /&gt;
* 字下げされた　&amp;lt;u&amp;gt;&#039;&#039;&#039;hoge&#039;&#039;&#039;, &#039;&#039;&#039;fuga&#039;&#039;&#039;, &#039;&#039;&#039;piyo&#039;&#039;&#039;&amp;lt;/u&amp;gt;　の３行をコメントアウトする&lt;br /&gt;
       hoge&lt;br /&gt;
         fuga&lt;br /&gt;
           piyo&lt;br /&gt;
&lt;br /&gt;
* 「&#039;&#039;&#039;カッコで囲う&#039;&#039;&#039;（ポップアップメニューあり）」マクロの「[[#JS / XML コメントアウト|JS コメントアウト２]]」&amp;lt;br&amp;gt; ※ つねに行の先頭へコメントマークを挿入します。&amp;lt;br&amp;gt; また、行内の一部分を範囲選択して実行した場合は、改行を入れて選択範囲の文字列だけをコメントアウトします。&lt;br /&gt;
 /*&lt;br /&gt;
  *        hoge&lt;br /&gt;
  *          fuga&lt;br /&gt;
  *            piyo&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
* 「&#039;&#039;&#039;引用符／コメント&#039;&#039;&#039;」マクロの「[[引用符／コメント#挿入／削除できる引用マークやコメントマーク|JS コメントアウト２]]」&amp;lt;br&amp;gt; ※ 字下げされたブロックの先頭位置へコメントマークを挿入します。&amp;lt;br&amp;gt; また、行内の一部分を範囲選択して実行した場合は、選択範囲を論理行全体に拡張してコメントアウトします。&lt;br /&gt;
       /* &lt;br /&gt;
        * hoge&lt;br /&gt;
        *   fuga&lt;br /&gt;
        *     piyo&lt;br /&gt;
        */&lt;br /&gt;
&lt;br /&gt;
※どちらのマクロもアンコメント機能がありますが、「カッコで囲う」マクロは、「引用符／コメント」マクロによって &amp;quot;字下げ位置に挿入されたコメントマーク&amp;quot; を正しく削除できません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
※どちらのマクロも  &amp;quot;&#039;&#039;&#039;/* &#039;&#039;&#039;&amp;quot;  と  &amp;quot;&#039;&#039;&#039; */&#039;&#039;&#039;&amp;quot;  だけでコメントアウトすることもできます。&lt;br /&gt;
: また、&amp;quot;&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;lt;!-- &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&amp;quot;  と  &amp;quot;&#039;&#039;&#039;&amp;lt;nowiki&amp;gt; --&amp;gt;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&amp;quot;  でのコメントアウトとアンコメントもできます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 「カッコで囲う」マクロは選択範囲内を、「引用符／コメント」マクロは選択範囲のある行全体をコメントアウトします。&lt;br /&gt;
 &amp;quot;hijklmn&amp;quot; の部分を範囲選択してコメントアウトする&lt;br /&gt;
 &lt;br /&gt;
 abcdefg&amp;lt;u&amp;gt;&#039;&#039;&#039;hijklmn&#039;&#039;&#039;&amp;lt;/u&amp;gt;opqrstuvwxyz&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 「カッコで囲う」マクロの場合&lt;br /&gt;
 &lt;br /&gt;
 abcdefg &#039;&#039;&#039;&#039;&#039;/* hijklmn */&#039;&#039;&#039;&#039;&#039; opqrstuvwxyz&lt;br /&gt;
 abcdefg &#039;&#039;&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;lt;!-- hijklmn --&amp;gt;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&#039;&#039; opqrstuvwxyz&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 「引用符／コメント」マクロの場合&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&#039;&#039;/* abcdefghijklmnopqrstuvwxyz */&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;lt;!-- abcdefghijklmnopqrstuvwxyz --&amp;gt;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 更新履歴 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:30em; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
* 2018/08/24 (sukemaru)&lt;br /&gt;
: ページを新規作成&lt;br /&gt;
&lt;br /&gt;
* 2018/08/26 (sukemaru)&lt;br /&gt;
: 「カッコで囲う (ポップアップメニューなし)」の節を追加&lt;br /&gt;
&lt;br /&gt;
* 2018/08/27 (sukemaru)&lt;br /&gt;
:・「カッコで囲う (ポップアップメニューあり)」のソースコードを修正&lt;br /&gt;
:・case1～8 の &amp;quot;&amp;lt;u&amp;gt;s.CharLeft( false, p2[r].length );&amp;lt;/u&amp;gt;&amp;quot; を &amp;quot;&amp;lt;u&amp;gt;s.SetActivePos( s.GetActivePos() - p2[r].length );&amp;lt;/u&amp;gt;&amp;quot; に変更&lt;br /&gt;
&lt;br /&gt;
* 2018/10/12 (sukemaru)&lt;br /&gt;
: 「カッコで囲う (ポップアップメニューあり)」のソースコードに &amp;quot;3文字ずつ前後を削除&amp;quot; を追加&lt;br /&gt;
: 組みこみ用コード「wiki用 文字列装飾」と「挿入型コメントアウト」の節を追加&lt;br /&gt;
: 「カッコで囲う.zip」のダウンロードリンクを追加&lt;br /&gt;
&lt;br /&gt;
* 2018/10/13 - 2018/10/16 (sukemaru)&lt;br /&gt;
:・マクロのコードを微修正&lt;br /&gt;
:・「カッコで囲う.zip」を差し替え&lt;br /&gt;
&lt;br /&gt;
* 2018/10/19 (sukemaru)&lt;br /&gt;
:・「引用符を追加／削除」の節を追加&lt;br /&gt;
:・「カッコで囲う.zip」を差し替え&lt;br /&gt;
&lt;br /&gt;
* 2018/10/26 (sukemaru)&lt;br /&gt;
:・コードの体裁を修正 （※変数名を変更したので、追加コードは最新の「カッコで囲う」でないとエラーになる）&lt;br /&gt;
:・各マクロの動作コードを変更し、実行後の文字列に変化なしになる場合に undo 履歴を残さないようにした&lt;br /&gt;
:・追加コード「任意の文字列」の項目を追加&lt;br /&gt;
:・追加コードの「JS コメントアウト１」と「XML コメントアウト」のコードをまとめた&lt;br /&gt;
:・追加コードの「JS アンコメント」で先頭/末尾のコメントマーク /* */ がある行では中間行の行頭記号を削除しないようにした&lt;br /&gt;
:・「引用符を追加／削除」の終了後の動作コードを変更し、不自然な位置にキャレットが移動する不具合を修正した&lt;br /&gt;
:・「カッコで囲う.zip」を差し替え&lt;br /&gt;
&lt;br /&gt;
* 2018/10/29 (sukemaru)&lt;br /&gt;
:・「カッコで囲う (ポップアップメニューあり)」の節を更新（本体のソースコードに追加コードを包摂）&lt;br /&gt;
:・「カッコで囲う (ポップアップメニューあり)」のメニュー項目に「任意の文字列２」を追加&lt;br /&gt;
:・「カッコで囲う (ポップアップメニューあり)」のソースコードをまとめてページ下部に移動&lt;br /&gt;
:・「カッコで囲う.zip」を差し替え&lt;br /&gt;
* 2018/11/19 (sukemaru)&lt;br /&gt;
:・「カッコで囲う (ポップアップメニューあり)」用の人柱版追加コード「行頭/行末から任意の 文字数 を削除」「行頭/行末から任意の 文字列 を削除」を追加&lt;br /&gt;
&lt;br /&gt;
* 2019/03/28 (sukemaru)&lt;br /&gt;
:・「カッコで囲う (ポップアップメニューあり)」のコードを増補・改変。人柱版追加コードを統合。&lt;br /&gt;
::・「JS コメントアウト／アンコメント」を正規表現置換メソッドに変更&lt;br /&gt;
::・「任意の 文字数／文字列 を削除」を追加&lt;br /&gt;
::・「行頭／行末の空白を削除」を追加&lt;br /&gt;
::・「１文字ずつ前後を削除（外）」を追加&lt;br /&gt;
::・「ひとつ削除」を追加（「カッコをはずす」マクロから転用）&lt;br /&gt;
::・「アウトプット／アラート／コンファーム／ステータス」を追加&lt;br /&gt;
::・「カッコの定義」を使わないコマンドの ID を 1030～ に変更&lt;br /&gt;
::・ サブメニューを追加してネスト化&lt;br /&gt;
:・「引用符を追加／削除」に選択範囲の外側の”引用符”の削除機能を追加&lt;br /&gt;
:・「引用符を追加／削除」の終了時の動作コードを再変更&lt;br /&gt;
:・「カッコで囲う.zip」を差し替え&lt;br /&gt;
&lt;br /&gt;
* 2019/04/07 (sukemaru)&lt;br /&gt;
:・「引用符を追加／削除」から Quit() メソッドを削除&lt;br /&gt;
:・「カッコで囲う.zip」を差し替え&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
◆ &#039;&#039;&#039;動作の不具合などがあったらお知らせ下さい。&#039;&#039;&#039;（sukemaru）◆&lt;br /&gt;
&lt;br /&gt;
* (2020.05.22 isari)&lt;br /&gt;
いつも愛用させていただいております。「カッコで囲う (ポップアップメニュー）」を素のままで使うと、カッコで囲まれた文字列が2つできてしまう、という不具合があるように見受けられます。&lt;br /&gt;
&lt;br /&gt;
おそらくソースコードの211行目を、すぐ下の if(pos) のブロックに入れ込めば改善するかと思われます。&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5112</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5112"/>
		<updated>2020-05-21T21:31:44Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* テキスト操作補助 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「Macros」フォルダ等に保存し、マクロメニューの「選択」や「カスタマイズ」から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/haijinboys/mery-macro-emmet Emmet] (Kuro)&lt;br /&gt;
*[[Zen Coding]] (Kuro)&lt;br /&gt;
*[[CSV のカーソル位置の列を削除]] (Kuro)&lt;br /&gt;
*[[対応する括弧に移動]] (Kuro, kurama, masme 他) update 2019/04/24 （追加コード 2019/12/05）&lt;br /&gt;
*[[選択文字列を強調]] (Kuro)&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2020/05/22&lt;br /&gt;
*[[行頭か行末 または 選択範囲の始点か終点|行頭か行末 または 選択範囲の始点か終点 に移動]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[文書の先頭か末尾|文書の 先頭か末尾 に移動]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[バイト数]] (Kuro, ks)&lt;br /&gt;
*[[日付と時刻を挿入]] (n, masme, sukemaru) update 2018/12/09&lt;br /&gt;
*[[日付と時刻を挿入（カレンダー版）]] (papagoat) update 2016/05/24&lt;br /&gt;
*[[選択範囲を上下に移動]] (ks)&lt;br /&gt;
*[[行を上下に移動（Mery 2.7 用）]]　(sukemaru) 2019/05/07　※Mery 2.7 以降用（ブックマークを保持）&lt;br /&gt;
*[[行を複製 (複数行可)]] (sukemaru) update 2019/05/07&lt;br /&gt;
*[[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[Vz 風テキストスタック 2 ストロークキー]] (papagoat) update 2013/11/22&lt;br /&gt;
*[[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
*[[ラクラク罫線]] (手石) Update 2012/12/22&lt;br /&gt;
*[[ファイル:XHTML.zip]] (アラフォー親父) HTMLタグを、ショートカット・キーに登録して入力するマクロ（文章挟み込み仕様）&lt;br /&gt;
*[[矩形ペースト]] (手石)&lt;br /&gt;
*[[自動箇条書き]] (手石) update 2013/03/15&lt;br /&gt;
*[[インデントを考慮した折り返し（改行挿入）]] (手石) update 2013/02/23&lt;br /&gt;
*[[青空文庫用整形補助]] (ks, 有志)&lt;br /&gt;
*[[部分編集]] (ks)&lt;br /&gt;
*[[文字カウント]] (masme) 2014/02/01, update 2020/05/17&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント)  (masme) 2014/02/09, update 2019/06/01&lt;br /&gt;
:[[字下げ・字上げ#sukemaru 版|スペース×２ 追加・削除]]、[[字下げ・字上げ#インデント|インデント・逆インデント]] (sukemaru) last update 2019/12/01　※Mery 2.8.6 以上でブックマークを保持&lt;br /&gt;
*[[数値を増減]](インクリメント・デクリメント) (masme) 2014/06/17, update 2020/05/17&lt;br /&gt;
*[[少し便利な Undo/Redo]] (ks)&lt;br /&gt;
*[[自動ルビ振り]] (急急如律令)&lt;br /&gt;
*[[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko, sukemaru) update 2018/11/14&lt;br /&gt;
*[[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
*[[矩形選択範囲の各行先頭に文字挿入]] (yuko)&lt;br /&gt;
*[[行の先頭に貼り付け]] (sukemaru) 2018/08/24&lt;br /&gt;
*[[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
*[[アウトライン用ノード追加]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを上げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを下げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードの完了/未完了を切り替える]] (mik) 2018/10/18 update&lt;br /&gt;
*[[ハルナアウトライン用の完了/未完了フラグをノード名に反映する]] (mik) 2018/10/18 update&lt;br /&gt;
*[[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist, yuko) 2018/10/15 update&lt;br /&gt;
*[[Markdown 向け、リスト記号 (*) のトグル]] (yuko) 2019/04/29&lt;br /&gt;
*[[引用符／コメント]] ※ポップアップメニュー (行頭の文字列操作. 「引用の追加」マクロの増補改訂版)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
*[[カッコで囲う]] (ポップアップメニューあり)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
:「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (簡易版 ポップアップメニューなし)]]」&amp;lt;br&amp;gt; 「[[カッコで囲う#引用符を追加／削除|引用符を追加／削除]]」（ &amp;quot;二重引用符&amp;quot; の追加／削除トグル）&lt;br /&gt;
*[[カッコをはずす]] ＆ [[カッコをはずす#カッコを削除／追加|カッコを削除／追加]] ＆ [[カッコをはずす#カッコを追加／削除|カッコを追加／削除]] (sukemaru) fixed 2019/05/03&lt;br /&gt;
*[[定型文を挿入]]マクロ集 (sukemaru) 2018/12/03&lt;br /&gt;
*[[何年生で習う漢字？]] (シリル) 2019/03/10&lt;br /&gt;
*[[上に行挿入]] (yuko) 2019/05/11&lt;br /&gt;
*[[位置情報を保存してから「すべて選択／選択解除」(非スクロール)]] (sukemaru)&lt;br /&gt;
: update 2019/11/13： 「[[位置情報を保存してから「すべて選択／選択解除」(非スクロール)#【include 版】位置を復帰／保存|位置を復帰／保存]]」を追加&lt;br /&gt;
*[[選択範囲を広げる]] (yuko) 2020/03/22&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[ファイルのプロパティ]] (sukemaru) 2018/12/18&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
*[[選択範囲のURL・パスを開く|ひらけゴマ！]] ※「選択範囲のURL・パスを開く」 (sukemaru) update 2019/04/07&lt;br /&gt;
*[[自動バックアップ]] (ks)&lt;br /&gt;
*[[終了時状態保持・復元]] (ks)&lt;br /&gt;
*[[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
*[[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
*[[パスを取得]] (Kuro)&lt;br /&gt;
*[[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
*[[ファイルを比較]] (Kuro)&lt;br /&gt;
*[[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
*[[ブックマーク一覧ジャンプ]] ※ポップアップメニュー (goat, sukemaru) update 2019/12/05&lt;br /&gt;
*[[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
*[[フォルダを開く]] (n)&lt;br /&gt;
*[[コマンドプロンプトを開く]] (n)&lt;br /&gt;
*[[SDIウィンドウの記憶と復帰]] (papagoat) Update 2012/10/23 (説明文変更 2013/11/22)&lt;br /&gt;
*[[よく使うフォルダ]] (手石) Update 2014/02/22&lt;br /&gt;
*[[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
*[[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
*[[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
*[[タグジャンプ]] (o)&lt;br /&gt;
*[[ウィンドウの位置とサイズを拡張子で指定]] (papagoat) Update 2014/04/17&lt;br /&gt;
*[[編集モードの自動選択]] または 「書き換え禁止で開く」 ※イベントマクロ (sukemaru, Bleat) update 2019/04/24&lt;br /&gt;
*[[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
*[[特定のフォルダで「ファイルを開く」ダイアログ]] (sukemaru) update 2020/05/10&lt;br /&gt;
*[[すべて閉じる]]マクロ集 (sukemaru) update 2019/05/03 &amp;lt;br&amp;gt;｢他（右側／左側）のタブを閉じる｣ などを追加&lt;br /&gt;
*[[文書が変更されていなければ変更マークを消す]] (Noah)&lt;br /&gt;
*[[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
*[[ファイルを読み直す・開きなおす]] ※ポップアップメニュー (sukemaru) last update 2019/11/30 &amp;lt;br&amp;gt; エンコード指定で読み直し・読み取り専用属性の変更・編集モードの変更・プロパティを開く・さいごに閉じたファイルを開く・etc...&lt;br /&gt;
*[[さいごに閉じたファイルを開く]] ※ポップアップメニュー (sukemaru) 2019/11/30&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
&lt;br /&gt;
*[[可変長を固定長に変換]] (Kuro)&lt;br /&gt;
*[[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
*[[標準変換]] (Kuro)&lt;br /&gt;
*[[連続する重複行を削除]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え]] (Kuro)&lt;br /&gt;
*[[降順で並び替え]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え／降順で並び替え]] トグル変換 (sukemaru) last update 2020/05/04 &amp;lt;br&amp;gt;「[[昇順で並び替え／降順で並び替え#昇順／降順トグル ＋ 文字列反転|昇順／降順トグル ＋ 文字列反転]]」を追加&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2019/12/21&lt;br /&gt;
*[[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
*[[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
*[[連番の挿入]] (手石)&lt;br /&gt;
*[[TSV(CSV) ⇒ 固定長]] (手石) update 2013/04/16&lt;br /&gt;
*[[行並べ替え]] (masme) 2013/08/25, update 2020/05/20&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25, update 2020/05/17&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&lt;br /&gt;
*[[TrueとFalse_を切り替える|YES／NO マクロ]] (sukemaru) update 2020/05/12 ※「&amp;lt;span style=&amp;quot;color:#0000c0;&amp;quot;&amp;gt;True&amp;lt;/span&amp;gt;と&amp;lt;span style=&amp;quot;color:#c00;&amp;quot;&amp;gt;False&amp;lt;/span&amp;gt;をトグル切り替え」&lt;br /&gt;
*[[基数変換10_16]] (シリル) 2019/02/10&lt;br /&gt;
*[[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
*[[罫線変換]] (シリル) 2019/03/09&lt;br /&gt;
*[[全角／半角変換]] (sukemaru) fixed 2019/05/11 ※「ＡＢＣ」→「ABC」／「ABC」→「ＡＢＣ」&lt;br /&gt;
*[[全角／半角 トグル変換]] (sukemaru) fixed 2019/05/20 ※「ＡＢＣ」⇔「ABC」&lt;br /&gt;
*[[大文字／小文字／頭文字 トグル変換]] (sukemaru) last update 2019/08/29 ※「Abc」→「ABC」→「abc」&lt;br /&gt;
*[[ひらがな／カタカナ変換]] (sukemaru) update 2020/01/03 ※「あいうえお」⇔「アイウエオ」&lt;br /&gt;
*[[文字列の順番を逆に書き出す]] (sukemaru) update 2020/01/03 ※「あいうえお」⇔「おえういあ」&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
&lt;br /&gt;
*[[文書から検索]] (Kuro)&lt;br /&gt;
*[[単語を抽出]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチしない行)]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチする行)]] (Kuro)&lt;br /&gt;
*[[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
*[[ポップアップメニューで検索先にジャンプ]] (手石, sukemaru) Last Update 2019/04/16&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2019/06/01&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)→[[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
*[https://github.com/GunseiPaseri/Mery_macro 文字出現量ランキング] (群生系パセリ) 2015/12/28&lt;br /&gt;
*[[検索ヒット数表示]] (ks)&lt;br /&gt;
*[[検索ヒット数表示（選択文字列）]] ※イベントマクロ　(sukemaru) last update 2019/12/03 &amp;lt;br&amp;gt;「[[検索ヒット数表示（選択文字列）#機能強化バージョン|文字数・行数・バイト数・ヒット件数]]」を追加&lt;br /&gt;
*[[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
*[[任意の検索エンジンで検索ー改良版]] (Takeshi) 2019/07/12&lt;br /&gt;
*[[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
*[[簡易検索一覧]] (シリル) 2018/12/24&lt;br /&gt;
*[[簡易検索一覧などをアウトプット]] (シリル) 2018/12/31&lt;br /&gt;
*[[複数置換]] (Noah)&lt;br /&gt;
*[[類義語アウトプット【Python】]] (シリル) 2019/03/24&lt;br /&gt;
*[[校正支援アウトプット]] (シリル) 2019/05/01&lt;br /&gt;
*[[次／前の文字列を検索・改]] (sukemaru) last update 2020/05/12 ※複数行選択から『次／前の文字列を検索』&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[Eclipse風コメントアウト(改)]] (pizz) 2020/03/15&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme, sukemaru) last update 2019/06/01&lt;br /&gt;
:([[コメントマーク付け外し#sukemaru 版|sukemaru版]]) last update 2019/12/01 ※ブックマーク対応&lt;br /&gt;
*[[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
*[[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
*[[タグファイルから補完]] (n)&lt;br /&gt;
*[[コードスニペットもどき]] (手石) Update 2012/12/20&lt;br /&gt;
*[[TeX文書のコンパイル]] (手石)&lt;br /&gt;
*[[TeX数式のチェック]] (手石)&lt;br /&gt;
*[[簡易数式計算]] (ks)&lt;br /&gt;
*[[定義へ移動]] (ks)&lt;br /&gt;
*[[タブの桁数]] (手石)&lt;br /&gt;
*[[行末の空白を削除]] (n) 2014/12/19&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを実行(掲載時点ではバッチファイル・Javascript・Lua・PHP・Perl・Python・Ruby・UWSCに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを構文チェック(掲載時点ではPHP・Perlに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[[説明を出力]] (s) Create 2015/08/16&lt;br /&gt;
*[[拡張子からコンソール実行]] (YOS G-spec) 2019/6/22更新&lt;br /&gt;
*[[JSON整形]](Ovis) Create 2019/03/25&lt;br /&gt;
*[[JS フォーマット]] (sukemaru) 2020/05/03　※JavaScript のソースコードの整形&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
*[[テキストブラウザ]] (Kuro)&lt;br /&gt;
*[[Yahoo!天気情報]] (Kuro, sukemaru) last update 2020/05/11&lt;br /&gt;
*[[メール送信]] (ks)&lt;br /&gt;
*[[あつまれ☆みんなのおもしろアイコン]] (有志)&lt;br /&gt;
&lt;br /&gt;
== 実験的マクロ・練習マクロなど ==&lt;br /&gt;
&lt;br /&gt;
*【自家用】[[ファイルのフルパスをコピーして閉じる]] ※イベント (sukemaru) update 2019/04/14&lt;br /&gt;
*【自家用】[[行の表示方法を切り替える]] (sukemaru) update 2019/08/25 ※論理行⇔表示行 トグル&lt;br /&gt;
*【自家用】[[対応する括弧に移動#sukemaru 版|対応するカッコに移動・選択]] (sukemaru) last update 2019/12/05&lt;br /&gt;
*【実験】 [[位置情報を保存してから「次の文字列を検索」]]＋復帰　(sukemaru) 2019/05/28&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[HSPキーワード検索]] (SSSE) 2019/08/29&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&lt;br /&gt;
*[[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
*[[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
*[[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
*[[JavaScript を実行]] (n)&lt;br /&gt;
*[[Ruby を実行]] (n)&lt;br /&gt;
*[[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
*[[マクロ・関数をメニューで呼び出す]] (aliquis) 2013/08/19&lt;br /&gt;
*[[階層化マクロメニュー]] (ks)&lt;br /&gt;
*[[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
*[[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
*[[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
*[[Editor.OpenFile()のポリフィル]](kazy)&lt;br /&gt;
*[[折り返しトグル切り替え]] (Bleat, sukemaru) update 2020/03/15&lt;br /&gt;
*[[ファイルロック (排他制御) 的なもの]] (PebblePot)&lt;br /&gt;
*[[Mery.iniのオプション値を取得]] ※組み込み用関数 (sukemaru) last update 2020/05/14&lt;br /&gt;
*[[Mery本体のバージョンチェック]] ※組み込み用関数 (sukemaru) 2019/04/17 &amp;lt;br&amp;gt;サンプルコード: 「Begin/EndUndoGroup() メソッドを使えるのは ver 2.7.0 以降」&lt;br /&gt;
*[[IO.Serialize() の JSON を参照する]] ※組み込み用関数 (sukemaru) 2019/04/17&lt;br /&gt;
*[[ポップアップメニューを「n*十件ずつ」のサブメニューに自動分割する]] ※組み込み用関数 (sukemaru) 2019/04/20 &amp;lt;br&amp;gt;サンプルコード: 「すべての論理行をポップアップメニューに表示する」&lt;br /&gt;
*[[アクティブなタブのマクロを実行する]] (sukemaru) last update 2020/04/30&lt;br /&gt;
*[[「クリップボード履歴」メニューのマクロ化]]　(sukemaru) last update 2019/11/29 &amp;lt;br&amp;gt;　※ [[プラグイン:スニペットプラグイン|スニペット]] の機能を統合 ／ ※Mery ver 2.8.1 以降用 &amp;lt;br&amp;gt;　(2020/05/02: 追加コード「n 番目から m 番目まで貼り付け」、追加マクロ「追加コピー」)&lt;br /&gt;
*[[コンパクトメニュー]] (sukemaru) last update 2020/03/29　※[https://www.haijin-boys.com/software/mery/mery-3-0-0 Mery 3.0.1] までの追加コマンドに対応&lt;br /&gt;
*[[マクロメニュー]] (sukemaru) last update 2020/05/02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, sukemaru, 有志) last update 2020/05/22&lt;br /&gt;
*[[マテリアルデザインっぽいアイコンと『小マクロ集』]] ※アイコン収録数&#039;&#039;&#039;337&#039;&#039;&#039;コ (sukemaru) last update 2020/01/04&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[GetKeyState.exe(キー状態取得実行ファイル)]] (pizz) 2019/03/23&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks, 有志) Last Update 2019/09/08&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5111</id>
		<title>キーアサイン集</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5111"/>
		<updated>2020-05-21T21:30:07Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* 行頭に移動 (インデント対応) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;キーアサイン(キーボードの割り当て)集です．&amp;lt;br&amp;gt;&lt;br /&gt;
「従来動作＋α」または「別エディタの動作を模倣」を基本とします．&amp;lt;br&amp;gt;&lt;br /&gt;
他に良いと思われるキーアサインがあれば是非ご投稿ください．&lt;br /&gt;
* デフォルトのメニュー内コマンドのキーアサインは、[[ヘルプ:目次|ヘルプ]]の 「[[ヘルプ:目次#キーボードマップ|キーボードマップ]]」 を参照&lt;br /&gt;
* マクロをアイコン化してツールバーに配置するばあいは、「[[マテリアルデザインっぽいアイコンと『小マクロ集』]]」 を参照 &amp;lt;!-- ２行追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 注意点 =&lt;br /&gt;
* 「Alt + 矢印キー」は、開発環境の仕様制限により、キーを割り当てても動作しません（参考フォーラム→ [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2399 2013/12/23] [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=1078 2010/01/20]）。&lt;br /&gt;
&lt;br /&gt;
= キーアサイン =&lt;br /&gt;
== バックスペース ==&lt;br /&gt;
* 推奨割当「Ctrl + BackSpace」&lt;br /&gt;
* バックスペース処理をする（※通常は制御文字 DEL (0x007F) が挿入される）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Editor.ActiveDocument.Selection;&lt;br /&gt;
if (sel.IsEmpty) {&lt;br /&gt;
  sel.DeleteLeft(1);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 強制改行 (インデント無効) ==&lt;br /&gt;
* 推奨割当「Shift + Enter」「Ctrl + Enter」&lt;br /&gt;
* 自動インデントを無視して改行する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Write(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 切り取り (行切り取り無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + X」「Shift + Delete」&lt;br /&gt;
* 非選択時にカーソル行（論理行）を切り取りしない（※通常は行切り取りする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Cut();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時にカーソル行（論理行）をコピーしない（※通常は行コピーする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー時選択) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時コピー（行コピー）時にコピーした範囲を選択する（※通常は範囲選択しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピーして選択範囲を解除 ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 選択範囲ありでコピーしたときは選択範囲を解除する（※通常は選択解除しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.selection.Copy();&lt;br /&gt;
document.selection.Collapse( meCollapseStart );	// 選択範囲の開始位置にカーソルを移動&lt;br /&gt;
// 選択範囲の始点にカーソルを移動させて解除するなら ( meCollapseStart )&lt;br /&gt;
// 選択範囲の終点にカーソルを移動させて解除するなら ( meCollapseEnd )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== すべて選択 (非スクロール) ==&lt;br /&gt;
* 推奨割当「Ctrl + A」&lt;br /&gt;
* すべて選択時にスクロールしない（※通常は文書の末尾までスクロールする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶&lt;br /&gt;
Document.Selection.SelectAll();&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲を解除 (非スクロール) ==&lt;br /&gt;
* 推奨割り当て「Shift + Esc」または「Esc」 &amp;lt;br&amp;gt; ※「Ctrl + Esc」/「Ctrl + Shift + Esc」は Windows の予約済みショートカットキー（スタートメニュー / タスクマネージャ） &amp;lt;br&amp;gt; ※ 通常、選択範囲の解除は「矢印キー」でもできるが、その場合カーソル位置まで画面がスクロールする&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.Collapse( meCollapseEnd );	// 選択範囲の先頭にカーソルを残して解除するなら ( meCollapseStart )&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
選択範囲の先頭/末尾によらず、アクティブなキャレット位置のまま解除するなら…&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.SetActivePos( document.selection.GetActivePos() );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
・2018/10/08追加 (sukemaru)&lt;br /&gt;
・2018/10/16加筆 (sukemaru)&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加切り取り ==&lt;br /&gt;
* 割当例「Shift + Ctrl + X」など&lt;br /&gt;
* クリップボードに追加する切り取り&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Cut();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加コピー ==&lt;br /&gt;
* 割当例「Shift + Ctrl + C」など&lt;br /&gt;
* クリップボードに追加するコピー&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を複製 ==&lt;br /&gt;
* 割当例「Ctrl + D」「Ctrl + Insert」など&lt;br /&gt;
* カーソル行（論理行）を複製する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.DuplicateLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 複数行を複製するばあいは、マクロ「[[行を複製 (複数行可)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を上下に複製 ==&lt;br /&gt;
* 割当例「Shift + Alt + U」「Shift + Alt + [」／「Shift + Alt + D」「Shift + Alt + ]」など（AtomやVSCodeの動作を意識しています）&lt;br /&gt;
→マクロ「[[行を複製 (複数行可)]]」&lt;br /&gt;
&lt;br /&gt;
== 行を上下に移動 ==&lt;br /&gt;
* 割当例「Alt + U」「Alt + [」／「Alt + D」「Alt + ]」など&lt;br /&gt;
→マクロ「[[行を上下に移動（Mery 2.7 用）]]」&lt;br /&gt;
&lt;br /&gt;
== 行を削除 ==&lt;br /&gt;
* 割当例「Ctrl + E」「Ctrl + Delete」など&lt;br /&gt;
* カーソル行（論理行）を削除する&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から同様の機能を持つ「行削除」が追加されました&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.Delete();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行頭／行末まで削除 ==&lt;br /&gt;
* 論理行の行頭／行末まで削除したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から追加された「行左削除」「行右削除」で、論理行の行頭／行末までの削除ができます&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 割当例「Shift + BackSpace」など&lt;br /&gt;
* カーソル位置から行頭（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Shift + Delete」など&lt;br /&gt;
* カーソル位置から行末（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  EndOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 定型文をファイルから挿入 ==&lt;br /&gt;
* 割り当て例「Ctrl + I」「Ctrl + @」など&lt;br /&gt;
* 文書の雛形用の定型文や署名（連絡先、コピーライト）などのテンプレートを、別途用意したテキストファイルから取り込む&lt;br /&gt;
* あらかじめ定型文用のテキストファイルを用意しておくこと&lt;br /&gt;
→ ref. [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]] の「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文（署名）を追加|定型文（署名）を追加]]」 （※「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文つき新規ドキュメント|定型文つき新規ドキュメント]]」を新規タブで開くソースコードもあります）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;定型文を追加&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;定型文をファイルから挿入&amp;quot;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
挿入したテンプレート部分の先頭にカーソルを移動させるなら以下のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
var pos = document.selection.GetActivePos();&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
document.selection.SetActivePos( pos );		// キャレットをマクロ開始前の座標に戻す&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 括弧で挟む ==&lt;br /&gt;
* 割当例「Ctrl + 8」「Ctrl + [ 」など&lt;br /&gt;
* カーソル位置or選択範囲を指定の文字列で挟む&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var prefix = &amp;quot;(&amp;quot;;	//前に付ける文字列&lt;br /&gt;
var suffix = &amp;quot;)&amp;quot;;	//後に付ける文字列&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  Text = prefix + Text + suffix;&lt;br /&gt;
  SetActivePos(GetActivePos() - suffix.length);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲 なし&#039;&#039;&#039; のときと &#039;&#039;&#039;あり&#039;&#039;&#039; のときとで変えたいばあいは、マクロ「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (ポップアップメニューなし)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 逆インデント (単一行対応) ==&lt;br /&gt;
* 推奨割当「Shift + Tab」&lt;br /&gt;
* 複数行選択でない場合でも逆インデントする（※通常はタブ挿入）&lt;br /&gt;
* 複数行選択でない場合は、カーソルの位置関係を維持します&lt;br /&gt;
→ マクロ「[[非選択状態でも逆インデント]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.Text.indexOf(&amp;quot;\n&amp;quot;) &amp;lt; 0) {&lt;br /&gt;
  var x = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
  sel.SelectLine();&lt;br /&gt;
  var n = sel.Text.length;&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 位置関係を維持しない（行選択する）場合は下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!/\n/.test(Document.Selection.Text)) Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.UnIndent();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付と時刻 (メモ帳仕様) ==&lt;br /&gt;
* 推奨割当「F5」&lt;br /&gt;
* メモ帳のように「時刻 日付」の順で現在日時を挿入（※通常は「日付 時刻」の順）&lt;br /&gt;
→ マクロ「[[日付と時刻を挿入]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.InsertDate(meDateTimeDate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上書き保存 (UAC対応) ==&lt;br /&gt;
* 推奨割当「Ctrl + S」&lt;br /&gt;
* UAC が必要な場合は権限昇格して保存&lt;br /&gt;
→ マクロ「[[上書き保存(UAC対応)]]」&lt;br /&gt;
&lt;br /&gt;
== 元に戻す ==&lt;br /&gt;
* 推奨割当「Ctrl + Z」&lt;br /&gt;
* 「元に戻す」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== やり直し ==&lt;br /&gt;
* 推奨割当「Ctrl + Y」&lt;br /&gt;
* 「やり直し」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== 上移動 (先頭行では行頭へ) ==&lt;br /&gt;
* 推奨割当「Up (↑)」&lt;br /&gt;
* 上の行がそれ以上存在しない場合は、行頭（文書の先頭）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;gt; 1) {&lt;br /&gt;
  sel.LineUp();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.StartOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 下移動 (最終行では行末へ) ==&lt;br /&gt;
* 推奨割当「Down (↓)」&lt;br /&gt;
* 下の行がそれ以上存在しない場合は、行末（文書の末尾）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;lt; Document.GetLines(meGetLineView)) {&lt;br /&gt;
  sel.LineDown();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.EndOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 対応する括弧に移動 ==&lt;br /&gt;
* 割当例「Ctrl + [ 」「Ctrl + ] 」など&lt;br /&gt;
* カーソル右側に括弧がある場合、対応する括弧に移動する&lt;br /&gt;
→ マクロ「[[対応する括弧に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 行頭に移動 (インデント対応) ==&lt;br /&gt;
* 推奨割当「Home」「Shift + Home」&lt;br /&gt;
* インデント位置＜カーソル位置の場合は、インデント位置に移動する&lt;br /&gt;
* カーソル位置≦インデント位置の場合は、行頭に移動する&lt;br /&gt;
→ マクロ「[[行頭に移動]]」、「[[行頭か行末 または 選択範囲の始点か終点]]」&lt;br /&gt;
&lt;br /&gt;
== 文書の1/4上に／下に移動 ==&lt;br /&gt;
* 割当例「Ctrl + PageUp」など&lt;br /&gt;
* 総表示行数の1/4分、上に移動する（4回の移動で文書頭の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineUp(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Ctrl + PageDown」など&lt;br /&gt;
* 総表示行数の1/4分、下に移動する（4回の移動で文書末の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineDown(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲の始点終点を交替 ==&lt;br /&gt;
* 選択範囲の始点と終点（カーソル位置）を入れ替える&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  var acp = GetActivePos();&lt;br /&gt;
  SetActivePos(GetAnchorPos());&lt;br /&gt;
  SetAnchorPos(acp);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== この文字列を検索 ==&lt;br /&gt;
* 「次／前の文字列を検索」時に移動しない（※通常は次／前に移動する）&lt;br /&gt;
* 範囲選択時は選択文字列で、非選択時は単語選択してから検索を実行します&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  if (IsEmpty) SelectWord();&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY, acp = GetActivePos(), anp = GetAnchorPos();&lt;br /&gt;
  Find(Text, meFindReplaceCase + meFindNext + meFindAround);&lt;br /&gt;
  SetActivePos(acp); SetAnchorPos(anp); ScrollX = sx; ScrollY = sy;&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 標準の移動／選択操作 =&lt;br /&gt;
カーソル移動などは通常、キー割り当てを変更することはできませんが、機能を再現したマクロにキー割り当てすることで実現できます。&lt;br /&gt;
* 範囲選択版は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上／下／左／右 ==&lt;br /&gt;
;上移動 / 下移動&lt;br /&gt;
* 標準の割当「Up (↑)」／選択版の割当「Shift + Up (↑)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Down (↓)」／選択版の割当「Shift + Down (↓)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左移動 / 右移動&lt;br /&gt;
* 標準の割当「Left (←)」／選択版の割当「Shift + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Right (→)」／選択版の割当「Shift + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上頁／下頁／左単語／右単語 ==&lt;br /&gt;
;1ページ上に移動 / 1ページ下に移動&lt;br /&gt;
* 標準の割当「PageUp」／選択版の割当「Shift + PageUp」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「PageDown」／選択版の割当「Shift + PageDown」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左の単語に移動 / 右の単語に移動&lt;br /&gt;
* 標準の割当「Ctrl + Left (←)」／選択版の割当「Shift + Ctrl + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + Right (→)」／選択版の割当「Shift + Ctrl + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 行頭／行末／文書頭／文書末 ==&lt;br /&gt;
;行頭に移動 / 行末に移動 (表示行)&lt;br /&gt;
* 論理行の行頭／行末に移動したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 標準の割当「Home」／選択版の割当「Shift + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「End」／選択版の割当「Shift + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;文書の先頭に移動 / 文書の末尾に移動&lt;br /&gt;
* 標準の割当「Ctrl + Home」／選択版の割当「Shift + Ctrl + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + End」／選択版の割当「Shift + Ctrl + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 単語を選択 ==&lt;br /&gt;
* マウス操作「文字をダブルクリック」&lt;br /&gt;
* カーソル位置にある単語（連続する英数字・かな・カナ・漢字）を選択する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectWord();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を選択 (論理行／表示行) ==&lt;br /&gt;
* マウス操作「文字をトリプルクリック」&lt;br /&gt;
* カーソル行（論理行）を選択する（カーソルは次行行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* マウス操作「行番号をクリック」&lt;br /&gt;
* カーソル行（表示行）を選択する（カーソルは行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  EndOfLine(false, mePosView);&lt;br /&gt;
  if (Document.Text.charAt(GetActivePos())===&amp;quot;\n&amp;quot;)&lt;br /&gt;
    SetAnchorPos(GetActivePos()+1); //行末が改行の場合、改行も含める&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 行末の改行を含めないなら、マクロ「[[マテリアルデザインっぽいアイコンと『小マクロ集』#論理行を選択する (改行を含まない) ※複数行可|論理行を選択する (改行を含まない)]]」／「[[マテリアルデザインっぽいアイコンと『小マクロ集』#表示行を選択する (改行を含まない)|表示行を選択する (改行を含まない)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ご意見・ご要望 =&lt;br /&gt;
何かありましたら，右の [編集] から追記してください．対応するかもしれません．&lt;br /&gt;
&lt;br /&gt;
* 行を上下に移動・複製&lt;br /&gt;
&lt;br /&gt;
AtomやVisual Studio Codeにある、「Alt＋↑／↓」で行を上下に移動、また「Alt＋Shift＋↑／↓」で上下に複製というのはできるでしょうか？自分で書いてみたところ論理行ではなく表示行のみが移動してしまいうまくいきませんでした。&lt;br /&gt;
&lt;br /&gt;
なおAlt＋矢印キーがMeryでは効かないことは存じておりますので、キーバインドは何か別のもの（Alt+U、Dとか）にする必要があると思います。&lt;br /&gt;
&lt;br /&gt;
(2020.05.22 isari)自己解決しました。sukemaruさんが「[[行を上下に移動（Mery 2.7 用）]]」マクロ等で実現なさっていましたので、その旨上のキーアサインにも追加いたしました。（[[キーアサイン集#行を上下に複製|行を上下に複製]]など）&lt;br /&gt;
----&lt;br /&gt;
* [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]]へのリンクと、マクロ「[[#定型文をファイルから挿入]]」「[[#コピーして選択範囲を解除]]」「[[#選択範囲を解除 (非スクロール)]]」を追加しました。&amp;lt;br&amp;gt;このページに不適切でしたら削除します。(2018/10/08 sukemaru)&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E8%A1%8C%E9%A0%AD%E3%81%AB%E7%A7%BB%E5%8B%95&amp;diff=5110</id>
		<title>行頭に移動</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E8%A1%8C%E9%A0%AD%E3%81%AB%E7%A7%BB%E5%8B%95&amp;diff=5110"/>
		<updated>2020-05-21T21:28:56Z</updated>

		<summary type="html">&lt;p&gt;Isari: isari版を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;インデント位置＜カーソル位置の場合は、インデント位置に、&amp;lt;br&amp;gt;&lt;br /&gt;
カーソル位置≦インデント位置の場合は、(表示)行頭に移動します。&amp;lt;br&amp;gt;&lt;br /&gt;
「Home」キーなどに割り当ててご利用ください。&lt;br /&gt;
&lt;br /&gt;
「shift」変数を「true」に書き換えると、選択しながら移動します。&amp;lt;br&amp;gt;&lt;br /&gt;
「Shift + Home」キーなどに割り当ててご利用ください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kuro 版 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// -----------------------------------------------------------------------------&lt;br /&gt;
// 行頭に移動&lt;br /&gt;
//&lt;br /&gt;
// Copyright (c) Kuro. All Rights Reserved.&lt;br /&gt;
// www:    http://www.haijin-boys.com/&lt;br /&gt;
// -----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
// シフトの状態(オンの場合は選択、オフの場合は移動)&lt;br /&gt;
var shift = false;&lt;br /&gt;
&lt;br /&gt;
// インデントとして認識する文字(半角空白、全角空白、タブ)&lt;br /&gt;
var indent = new RegExp(&amp;quot; |　|\t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// 現在位置取得&lt;br /&gt;
var x1 = document.selection.GetActivePointX(mePosView);&lt;br /&gt;
var y1 = document.selection.GetActivePointY(mePosView);&lt;br /&gt;
&lt;br /&gt;
// 選択終了位置取得&lt;br /&gt;
var x2 = document.selection.GetBottomPointX(mePosView);&lt;br /&gt;
var y2 = document.selection.GetBottomPointY(mePosView);&lt;br /&gt;
&lt;br /&gt;
// カーソルを行末に移動&lt;br /&gt;
document.selection.EndOfLine(false);&lt;br /&gt;
&lt;br /&gt;
// カーソルを行頭に移動(これで1行選択)&lt;br /&gt;
document.selection.StartOfLine(true);&lt;br /&gt;
&lt;br /&gt;
var s = document.selection.Text;&lt;br /&gt;
var i = 0;&lt;br /&gt;
&lt;br /&gt;
// 行頭からタブの数を確認&lt;br /&gt;
for (var j = 0; j &amp;lt; s.length; j++) {&lt;br /&gt;
  c = s.charAt(j);&lt;br /&gt;
  if (indent.test(c))&lt;br /&gt;
    i++;&lt;br /&gt;
  else&lt;br /&gt;
    break;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// シフトオンの場合、選択終了位置に移動&lt;br /&gt;
if (shift)&lt;br /&gt;
  document.selection.SetActivePoint(mePosView, x2, y2, false);&lt;br /&gt;
&lt;br /&gt;
// 現在位置が1より大きくてタブの数以下の場合は行頭に移動&lt;br /&gt;
if (x1 &amp;gt; 1 &amp;amp;&amp;amp; x1 &amp;lt;= i + 1)&lt;br /&gt;
  document.selection.StartOfLine(shift);&lt;br /&gt;
// それ以外の場合はタブの数だけ進める&lt;br /&gt;
else&lt;br /&gt;
  document.selection.SetActivePoint(mePosView, i + 1, y1, shift);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= masme 版 (2014/02) =&lt;br /&gt;
&lt;br /&gt;
* 論理行単位の移動に対応しました。「logic」変数を「true」に書き換えてください。&lt;br /&gt;
* 折り返し行頭の空白をインデントとみなさない設定を追加する予定でしたが、一筋縄ではいかなかったため見送りました。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//■行頭に移動(インデント対応)&lt;br /&gt;
//　2014/02/08&lt;br /&gt;
&lt;br /&gt;
//■範囲選択(true:する/false:しない)&lt;br /&gt;
var shift = false;&lt;br /&gt;
//■論理行の行頭に移動(true:する/false:しない) ●標準=false (表示行)&lt;br /&gt;
var logic = false;&lt;br /&gt;
//■インデントの定義 ●初期値=/^[ 　\t]+/ (半角空白/全角空白/水平タブ)&lt;br /&gt;
var indent = /^[ 　\t]+/;&lt;br /&gt;
&lt;br /&gt;
(function(){&lt;br /&gt;
  var sel = Document.Selection;&lt;br /&gt;
  var meP  = logic? mePosLogical: mePosView;&lt;br /&gt;
  var meGL = logic? 0: meGetLineView;&lt;br /&gt;
  var px = sel.GetActivePointX(meP);&lt;br /&gt;
  var py = sel.GetActivePointY(meP);&lt;br /&gt;
  var line = Document.GetLine(py, meGL);&lt;br /&gt;
  var ix = 1+ (line.match(indent)||{lastIndex:0}).lastIndex;&lt;br /&gt;
  if (ix&amp;lt;px)	//◆ix&amp;lt;px インデント位置＜カーソル位置の場合、インデント位置へ&lt;br /&gt;
    sel.SetActivePoint(meP, ix, py, shift);&lt;br /&gt;
  else		//◆px&amp;lt;=ix カーソル位置≦インデント位置の場合、行頭へ&lt;br /&gt;
    sel.StartOfLine(shift, meP);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= noonworks 版 (2014/03) =&lt;br /&gt;
&lt;br /&gt;
* masmeさんのコードを参考に、折り返し行頭の空白をインデントとみなさない設定を追加してみました。&lt;br /&gt;
* 元から行頭にいた場合に前の行の行末に移動する設定を追加しました。&lt;br /&gt;
* [https://github.com/noonworks/my-mery-util github]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行頭に移動&amp;quot;&lt;br /&gt;
// 行頭に移動&lt;br /&gt;
var go_prev_line = true;    // すでに先頭にいたとき前の行の行末に移動するか&lt;br /&gt;
var view_line = true;       // 折り返し行（表示行）の行頭に移動するか&lt;br /&gt;
var view_line_indent = true;// 折り返し行の行頭の空白をインデントとして扱うか&lt;br /&gt;
var indent = /^[ 　\t]+/;   // インデントの定義&lt;br /&gt;
(function(){&lt;br /&gt;
    var getToXView = function(line, nowX, ignore_indent) {&lt;br /&gt;
        if (ignore_indent) return 1;&lt;br /&gt;
        var m = line.match(indent);&lt;br /&gt;
        var toX = (m === null) ? 1 : (1 + m.lastIndex);&lt;br /&gt;
        return (toX &amp;lt; nowX) ? toX : 1;&lt;br /&gt;
    };&lt;br /&gt;
    var sel = Document.Selection;&lt;br /&gt;
    var tp = sel.GetTopPointX(mePosLogical);&lt;br /&gt;
    var bt = sel.GetBottomPointX(mePosLogical);&lt;br /&gt;
    var selecting_now = (tp != bt);&lt;br /&gt;
    var posX_l = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
    var posY_l = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
    var posX_v = sel.GetActivePointX(mePosView);&lt;br /&gt;
    var posY_v = sel.GetActivePointY(mePosView);&lt;br /&gt;
    if (posX_l == 1) {&lt;br /&gt;
        if (go_prev_line) {&lt;br /&gt;
            sel.LineUp(selecting_now, 1);&lt;br /&gt;
            if (posY_v != sel.GetActivePointY(mePosView)) {&lt;br /&gt;
                sel.EndOfLine(selecting_now, mePosView);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var toX_v = null;&lt;br /&gt;
    var line_l = Document.GetLine(posY_l, 0);&lt;br /&gt;
    var line_v = Document.GetLine(posY_v, meGetLineView);&lt;br /&gt;
    if (view_line &amp;amp;&amp;amp; (line_l != line_v)) {&lt;br /&gt;
        if (posX_v &amp;gt; 1) {&lt;br /&gt;
            toX_v = getToXView(line_v, posX_v, (!view_line_indent));&lt;br /&gt;
            sel.SetActivePoint(mePosView, toX_v, posY_v, selecting_now);&lt;br /&gt;
        } else if (posY_v - posY_l &amp;gt; 1) {&lt;br /&gt;
            toX_v = getToXView(Document.GetLine(posY_v - 1, meGetLineView), 9999, (!view_line_indent));&lt;br /&gt;
            sel.SetActivePoint(mePosView, toX_v, posY_v - 1, selecting_now);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    if (toX_v === null) {&lt;br /&gt;
        var m = line_l.match(indent);&lt;br /&gt;
        toX_v = (m === null) ? 1 : (1 + m.lastIndex);&lt;br /&gt;
        if (toX_v &amp;gt;= posX_l) toX_v = 1;&lt;br /&gt;
        sel.SetActivePoint(mePosLogical, toX_v, posY_l, selecting_now);&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= isari 版 (2020/05) =&lt;br /&gt;
&lt;br /&gt;
* kuroさん版以外がうまく動かないようでしたので、sukemaruさんの「[[行頭か行末 または 選択範囲の始点か終点]]」を参考に、トグルなしの移動のみを行う簡易版として書き直してみました。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行頭に移動&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// シフトの状態(trueなら選択、falseなら移動)&lt;br /&gt;
var shift = false;&lt;br /&gt;
// 論理行か表示行か（trueなら論理行、falseなら表示行）&lt;br /&gt;
var logic = true;&lt;br /&gt;
// インデントの定義（「^」の後を変更してください）&lt;br /&gt;
var indent = new RegExp(&#039;[^ 　\s]&#039;);&lt;br /&gt;
&lt;br /&gt;
(function(){&lt;br /&gt;
    var d = document, s = d.selection;&lt;br /&gt;
    var meP = logic ? mePosLogical : mePosView;&lt;br /&gt;
    var meGL = logic ? 0 : meGetLineView;&lt;br /&gt;
&lt;br /&gt;
    Redraw = false;&lt;br /&gt;
    var x = s.GetActivePointX( meP );&lt;br /&gt;
    var y = s.GetActivePointY( meP );&lt;br /&gt;
    var pos = s.GetActivePos(); // 現在位置&lt;br /&gt;
    var top = pos + 1 - x;      // 行頭位置&lt;br /&gt;
    var st = d.GetLine( y, meGL );&lt;br /&gt;
    var sId = st.search( indent );    // 行頭の空白文字数&lt;br /&gt;
    var ind = top + sId;    // インデントの後ろ位置&lt;br /&gt;
&lt;br /&gt;
    if ( ind &amp;lt; pos ) {&lt;br /&gt;
        // 文字列開始位置に移動（インデントの後ろ）&lt;br /&gt;
        s.SetActivePos( ind, shift );&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        // 文頭に移動&lt;br /&gt;
        s.StartOfLine( shift, meP );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Redraw = true;&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5109</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5109"/>
		<updated>2020-05-21T20:09:22Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* その他 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「Macros」フォルダ等に保存し、マクロメニューの「選択」や「カスタマイズ」から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/haijinboys/mery-macro-emmet Emmet] (Kuro)&lt;br /&gt;
*[[Zen Coding]] (Kuro)&lt;br /&gt;
*[[CSV のカーソル位置の列を削除]] (Kuro)&lt;br /&gt;
*[[対応する括弧に移動]] (Kuro, kurama, masme 他) update 2019/04/24 （追加コード 2019/12/05）&lt;br /&gt;
*[[選択文字列を強調]] (Kuro)&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2014/03/15&lt;br /&gt;
*[[行頭か行末 または 選択範囲の始点か終点|行頭か行末 または 選択範囲の始点か終点 に移動]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[文書の先頭か末尾|文書の 先頭か末尾 に移動]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[バイト数]] (Kuro, ks)&lt;br /&gt;
*[[日付と時刻を挿入]] (n, masme, sukemaru) update 2018/12/09&lt;br /&gt;
*[[日付と時刻を挿入（カレンダー版）]] (papagoat) update 2016/05/24&lt;br /&gt;
*[[選択範囲を上下に移動]] (ks)&lt;br /&gt;
*[[行を上下に移動（Mery 2.7 用）]]　(sukemaru) 2019/05/07　※Mery 2.7 以降用（ブックマークを保持）&lt;br /&gt;
*[[行を複製 (複数行可)]] (sukemaru) update 2019/05/07&lt;br /&gt;
*[[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[Vz 風テキストスタック 2 ストロークキー]] (papagoat) update 2013/11/22&lt;br /&gt;
*[[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
*[[ラクラク罫線]] (手石) Update 2012/12/22&lt;br /&gt;
*[[ファイル:XHTML.zip]] (アラフォー親父) HTMLタグを、ショートカット・キーに登録して入力するマクロ（文章挟み込み仕様）&lt;br /&gt;
*[[矩形ペースト]] (手石)&lt;br /&gt;
*[[自動箇条書き]] (手石) update 2013/03/15&lt;br /&gt;
*[[インデントを考慮した折り返し（改行挿入）]] (手石) update 2013/02/23&lt;br /&gt;
*[[青空文庫用整形補助]] (ks, 有志)&lt;br /&gt;
*[[部分編集]] (ks)&lt;br /&gt;
*[[文字カウント]] (masme) 2014/02/01, update 2020/05/17&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント)  (masme) 2014/02/09, update 2019/06/01&lt;br /&gt;
:[[字下げ・字上げ#sukemaru 版|スペース×２ 追加・削除]]、[[字下げ・字上げ#インデント|インデント・逆インデント]] (sukemaru) last update 2019/12/01　※Mery 2.8.6 以上でブックマークを保持&lt;br /&gt;
*[[数値を増減]](インクリメント・デクリメント) (masme) 2014/06/17, update 2020/05/17&lt;br /&gt;
*[[少し便利な Undo/Redo]] (ks)&lt;br /&gt;
*[[自動ルビ振り]] (急急如律令)&lt;br /&gt;
*[[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko, sukemaru) update 2018/11/14&lt;br /&gt;
*[[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
*[[矩形選択範囲の各行先頭に文字挿入]] (yuko)&lt;br /&gt;
*[[行の先頭に貼り付け]] (sukemaru) 2018/08/24&lt;br /&gt;
*[[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
*[[アウトライン用ノード追加]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを上げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを下げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードの完了/未完了を切り替える]] (mik) 2018/10/18 update&lt;br /&gt;
*[[ハルナアウトライン用の完了/未完了フラグをノード名に反映する]] (mik) 2018/10/18 update&lt;br /&gt;
*[[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist, yuko) 2018/10/15 update&lt;br /&gt;
*[[Markdown 向け、リスト記号 (*) のトグル]] (yuko) 2019/04/29&lt;br /&gt;
*[[引用符／コメント]] ※ポップアップメニュー (行頭の文字列操作. 「引用の追加」マクロの増補改訂版)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
*[[カッコで囲う]] (ポップアップメニューあり)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
:「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (簡易版 ポップアップメニューなし)]]」&amp;lt;br&amp;gt; 「[[カッコで囲う#引用符を追加／削除|引用符を追加／削除]]」（ &amp;quot;二重引用符&amp;quot; の追加／削除トグル）&lt;br /&gt;
*[[カッコをはずす]] ＆ [[カッコをはずす#カッコを削除／追加|カッコを削除／追加]] ＆ [[カッコをはずす#カッコを追加／削除|カッコを追加／削除]] (sukemaru) fixed 2019/05/03&lt;br /&gt;
*[[定型文を挿入]]マクロ集 (sukemaru) 2018/12/03&lt;br /&gt;
*[[何年生で習う漢字？]] (シリル) 2019/03/10&lt;br /&gt;
*[[上に行挿入]] (yuko) 2019/05/11&lt;br /&gt;
*[[位置情報を保存してから「すべて選択／選択解除」(非スクロール)]] (sukemaru)&lt;br /&gt;
: update 2019/11/13： 「[[位置情報を保存してから「すべて選択／選択解除」(非スクロール)#【include 版】位置を復帰／保存|位置を復帰／保存]]」を追加&lt;br /&gt;
*[[選択範囲を広げる]] (yuko) 2020/03/22&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[ファイルのプロパティ]] (sukemaru) 2018/12/18&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
*[[選択範囲のURL・パスを開く|ひらけゴマ！]] ※「選択範囲のURL・パスを開く」 (sukemaru) update 2019/04/07&lt;br /&gt;
*[[自動バックアップ]] (ks)&lt;br /&gt;
*[[終了時状態保持・復元]] (ks)&lt;br /&gt;
*[[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
*[[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
*[[パスを取得]] (Kuro)&lt;br /&gt;
*[[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
*[[ファイルを比較]] (Kuro)&lt;br /&gt;
*[[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
*[[ブックマーク一覧ジャンプ]] ※ポップアップメニュー (goat, sukemaru) update 2019/12/05&lt;br /&gt;
*[[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
*[[フォルダを開く]] (n)&lt;br /&gt;
*[[コマンドプロンプトを開く]] (n)&lt;br /&gt;
*[[SDIウィンドウの記憶と復帰]] (papagoat) Update 2012/10/23 (説明文変更 2013/11/22)&lt;br /&gt;
*[[よく使うフォルダ]] (手石) Update 2014/02/22&lt;br /&gt;
*[[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
*[[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
*[[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
*[[タグジャンプ]] (o)&lt;br /&gt;
*[[ウィンドウの位置とサイズを拡張子で指定]] (papagoat) Update 2014/04/17&lt;br /&gt;
*[[編集モードの自動選択]] または 「書き換え禁止で開く」 ※イベントマクロ (sukemaru, Bleat) update 2019/04/24&lt;br /&gt;
*[[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
*[[特定のフォルダで「ファイルを開く」ダイアログ]] (sukemaru) update 2020/05/10&lt;br /&gt;
*[[すべて閉じる]]マクロ集 (sukemaru) update 2019/05/03 &amp;lt;br&amp;gt;｢他（右側／左側）のタブを閉じる｣ などを追加&lt;br /&gt;
*[[文書が変更されていなければ変更マークを消す]] (Noah)&lt;br /&gt;
*[[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
*[[ファイルを読み直す・開きなおす]] ※ポップアップメニュー (sukemaru) last update 2019/11/30 &amp;lt;br&amp;gt; エンコード指定で読み直し・読み取り専用属性の変更・編集モードの変更・プロパティを開く・さいごに閉じたファイルを開く・etc...&lt;br /&gt;
*[[さいごに閉じたファイルを開く]] ※ポップアップメニュー (sukemaru) 2019/11/30&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
&lt;br /&gt;
*[[可変長を固定長に変換]] (Kuro)&lt;br /&gt;
*[[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
*[[標準変換]] (Kuro)&lt;br /&gt;
*[[連続する重複行を削除]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え]] (Kuro)&lt;br /&gt;
*[[降順で並び替え]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え／降順で並び替え]] トグル変換 (sukemaru) last update 2020/05/04 &amp;lt;br&amp;gt;「[[昇順で並び替え／降順で並び替え#昇順／降順トグル ＋ 文字列反転|昇順／降順トグル ＋ 文字列反転]]」を追加&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2019/12/21&lt;br /&gt;
*[[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
*[[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
*[[連番の挿入]] (手石)&lt;br /&gt;
*[[TSV(CSV) ⇒ 固定長]] (手石) update 2013/04/16&lt;br /&gt;
*[[行並べ替え]] (masme) 2013/08/25, update 2020/05/20&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25, update 2020/05/17&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&lt;br /&gt;
*[[TrueとFalse_を切り替える|YES／NO マクロ]] (sukemaru) update 2020/05/12 ※「&amp;lt;span style=&amp;quot;color:#0000c0;&amp;quot;&amp;gt;True&amp;lt;/span&amp;gt;と&amp;lt;span style=&amp;quot;color:#c00;&amp;quot;&amp;gt;False&amp;lt;/span&amp;gt;をトグル切り替え」&lt;br /&gt;
*[[基数変換10_16]] (シリル) 2019/02/10&lt;br /&gt;
*[[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
*[[罫線変換]] (シリル) 2019/03/09&lt;br /&gt;
*[[全角／半角変換]] (sukemaru) fixed 2019/05/11 ※「ＡＢＣ」→「ABC」／「ABC」→「ＡＢＣ」&lt;br /&gt;
*[[全角／半角 トグル変換]] (sukemaru) fixed 2019/05/20 ※「ＡＢＣ」⇔「ABC」&lt;br /&gt;
*[[大文字／小文字／頭文字 トグル変換]] (sukemaru) last update 2019/08/29 ※「Abc」→「ABC」→「abc」&lt;br /&gt;
*[[ひらがな／カタカナ変換]] (sukemaru) update 2020/01/03 ※「あいうえお」⇔「アイウエオ」&lt;br /&gt;
*[[文字列の順番を逆に書き出す]] (sukemaru) update 2020/01/03 ※「あいうえお」⇔「おえういあ」&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
&lt;br /&gt;
*[[文書から検索]] (Kuro)&lt;br /&gt;
*[[単語を抽出]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチしない行)]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチする行)]] (Kuro)&lt;br /&gt;
*[[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
*[[ポップアップメニューで検索先にジャンプ]] (手石, sukemaru) Last Update 2019/04/16&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2019/06/01&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)→[[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
*[https://github.com/GunseiPaseri/Mery_macro 文字出現量ランキング] (群生系パセリ) 2015/12/28&lt;br /&gt;
*[[検索ヒット数表示]] (ks)&lt;br /&gt;
*[[検索ヒット数表示（選択文字列）]] ※イベントマクロ　(sukemaru) last update 2019/12/03 &amp;lt;br&amp;gt;「[[検索ヒット数表示（選択文字列）#機能強化バージョン|文字数・行数・バイト数・ヒット件数]]」を追加&lt;br /&gt;
*[[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
*[[任意の検索エンジンで検索ー改良版]] (Takeshi) 2019/07/12&lt;br /&gt;
*[[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
*[[簡易検索一覧]] (シリル) 2018/12/24&lt;br /&gt;
*[[簡易検索一覧などをアウトプット]] (シリル) 2018/12/31&lt;br /&gt;
*[[複数置換]] (Noah)&lt;br /&gt;
*[[類義語アウトプット【Python】]] (シリル) 2019/03/24&lt;br /&gt;
*[[校正支援アウトプット]] (シリル) 2019/05/01&lt;br /&gt;
*[[次／前の文字列を検索・改]] (sukemaru) last update 2020/05/12 ※複数行選択から『次／前の文字列を検索』&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[Eclipse風コメントアウト(改)]] (pizz) 2020/03/15&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme, sukemaru) last update 2019/06/01&lt;br /&gt;
:([[コメントマーク付け外し#sukemaru 版|sukemaru版]]) last update 2019/12/01 ※ブックマーク対応&lt;br /&gt;
*[[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
*[[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
*[[タグファイルから補完]] (n)&lt;br /&gt;
*[[コードスニペットもどき]] (手石) Update 2012/12/20&lt;br /&gt;
*[[TeX文書のコンパイル]] (手石)&lt;br /&gt;
*[[TeX数式のチェック]] (手石)&lt;br /&gt;
*[[簡易数式計算]] (ks)&lt;br /&gt;
*[[定義へ移動]] (ks)&lt;br /&gt;
*[[タブの桁数]] (手石)&lt;br /&gt;
*[[行末の空白を削除]] (n) 2014/12/19&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを実行(掲載時点ではバッチファイル・Javascript・Lua・PHP・Perl・Python・Ruby・UWSCに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを構文チェック(掲載時点ではPHP・Perlに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[[説明を出力]] (s) Create 2015/08/16&lt;br /&gt;
*[[拡張子からコンソール実行]] (YOS G-spec) 2019/6/22更新&lt;br /&gt;
*[[JSON整形]](Ovis) Create 2019/03/25&lt;br /&gt;
*[[JS フォーマット]] (sukemaru) 2020/05/03　※JavaScript のソースコードの整形&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
*[[テキストブラウザ]] (Kuro)&lt;br /&gt;
*[[Yahoo!天気情報]] (Kuro, sukemaru) last update 2020/05/11&lt;br /&gt;
*[[メール送信]] (ks)&lt;br /&gt;
*[[あつまれ☆みんなのおもしろアイコン]] (有志)&lt;br /&gt;
&lt;br /&gt;
== 実験的マクロ・練習マクロなど ==&lt;br /&gt;
&lt;br /&gt;
*【自家用】[[ファイルのフルパスをコピーして閉じる]] ※イベント (sukemaru) update 2019/04/14&lt;br /&gt;
*【自家用】[[行の表示方法を切り替える]] (sukemaru) update 2019/08/25 ※論理行⇔表示行 トグル&lt;br /&gt;
*【自家用】[[対応する括弧に移動#sukemaru 版|対応するカッコに移動・選択]] (sukemaru) last update 2019/12/05&lt;br /&gt;
*【実験】 [[位置情報を保存してから「次の文字列を検索」]]＋復帰　(sukemaru) 2019/05/28&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[HSPキーワード検索]] (SSSE) 2019/08/29&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&lt;br /&gt;
*[[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
*[[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
*[[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
*[[JavaScript を実行]] (n)&lt;br /&gt;
*[[Ruby を実行]] (n)&lt;br /&gt;
*[[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
*[[マクロ・関数をメニューで呼び出す]] (aliquis) 2013/08/19&lt;br /&gt;
*[[階層化マクロメニュー]] (ks)&lt;br /&gt;
*[[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
*[[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
*[[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
*[[Editor.OpenFile()のポリフィル]](kazy)&lt;br /&gt;
*[[折り返しトグル切り替え]] (Bleat, sukemaru) update 2020/03/15&lt;br /&gt;
*[[ファイルロック (排他制御) 的なもの]] (PebblePot)&lt;br /&gt;
*[[Mery.iniのオプション値を取得]] ※組み込み用関数 (sukemaru) last update 2020/05/14&lt;br /&gt;
*[[Mery本体のバージョンチェック]] ※組み込み用関数 (sukemaru) 2019/04/17 &amp;lt;br&amp;gt;サンプルコード: 「Begin/EndUndoGroup() メソッドを使えるのは ver 2.7.0 以降」&lt;br /&gt;
*[[IO.Serialize() の JSON を参照する]] ※組み込み用関数 (sukemaru) 2019/04/17&lt;br /&gt;
*[[ポップアップメニューを「n*十件ずつ」のサブメニューに自動分割する]] ※組み込み用関数 (sukemaru) 2019/04/20 &amp;lt;br&amp;gt;サンプルコード: 「すべての論理行をポップアップメニューに表示する」&lt;br /&gt;
*[[アクティブなタブのマクロを実行する]] (sukemaru) last update 2020/04/30&lt;br /&gt;
*[[「クリップボード履歴」メニューのマクロ化]]　(sukemaru) last update 2019/11/29 &amp;lt;br&amp;gt;　※ [[プラグイン:スニペットプラグイン|スニペット]] の機能を統合 ／ ※Mery ver 2.8.1 以降用 &amp;lt;br&amp;gt;　(2020/05/02: 追加コード「n 番目から m 番目まで貼り付け」、追加マクロ「追加コピー」)&lt;br /&gt;
*[[コンパクトメニュー]] (sukemaru) last update 2020/03/29　※[https://www.haijin-boys.com/software/mery/mery-3-0-0 Mery 3.0.1] までの追加コマンドに対応&lt;br /&gt;
*[[マクロメニュー]] (sukemaru) last update 2020/05/02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, sukemaru, 有志) last update 2020/05/22&lt;br /&gt;
*[[マテリアルデザインっぽいアイコンと『小マクロ集』]] ※アイコン収録数&#039;&#039;&#039;337&#039;&#039;&#039;コ (sukemaru) last update 2020/01/04&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[GetKeyState.exe(キー状態取得実行ファイル)]] (pizz) 2019/03/23&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks, 有志) Last Update 2019/09/08&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5108</id>
		<title>キーアサイン集</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5108"/>
		<updated>2020-05-21T19:59:48Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* 行頭に移動 (インデント対応) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;キーアサイン(キーボードの割り当て)集です．&amp;lt;br&amp;gt;&lt;br /&gt;
「従来動作＋α」または「別エディタの動作を模倣」を基本とします．&amp;lt;br&amp;gt;&lt;br /&gt;
他に良いと思われるキーアサインがあれば是非ご投稿ください．&lt;br /&gt;
* デフォルトのメニュー内コマンドのキーアサインは、[[ヘルプ:目次|ヘルプ]]の 「[[ヘルプ:目次#キーボードマップ|キーボードマップ]]」 を参照&lt;br /&gt;
* マクロをアイコン化してツールバーに配置するばあいは、「[[マテリアルデザインっぽいアイコンと『小マクロ集』]]」 を参照 &amp;lt;!-- ２行追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 注意点 =&lt;br /&gt;
* 「Alt + 矢印キー」は、開発環境の仕様制限により、キーを割り当てても動作しません（参考フォーラム→ [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2399 2013/12/23] [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=1078 2010/01/20]）。&lt;br /&gt;
&lt;br /&gt;
= キーアサイン =&lt;br /&gt;
== バックスペース ==&lt;br /&gt;
* 推奨割当「Ctrl + BackSpace」&lt;br /&gt;
* バックスペース処理をする（※通常は制御文字 DEL (0x007F) が挿入される）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Editor.ActiveDocument.Selection;&lt;br /&gt;
if (sel.IsEmpty) {&lt;br /&gt;
  sel.DeleteLeft(1);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 強制改行 (インデント無効) ==&lt;br /&gt;
* 推奨割当「Shift + Enter」「Ctrl + Enter」&lt;br /&gt;
* 自動インデントを無視して改行する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Write(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 切り取り (行切り取り無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + X」「Shift + Delete」&lt;br /&gt;
* 非選択時にカーソル行（論理行）を切り取りしない（※通常は行切り取りする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Cut();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時にカーソル行（論理行）をコピーしない（※通常は行コピーする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー時選択) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時コピー（行コピー）時にコピーした範囲を選択する（※通常は範囲選択しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピーして選択範囲を解除 ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 選択範囲ありでコピーしたときは選択範囲を解除する（※通常は選択解除しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.selection.Copy();&lt;br /&gt;
document.selection.Collapse( meCollapseStart );	// 選択範囲の開始位置にカーソルを移動&lt;br /&gt;
// 選択範囲の始点にカーソルを移動させて解除するなら ( meCollapseStart )&lt;br /&gt;
// 選択範囲の終点にカーソルを移動させて解除するなら ( meCollapseEnd )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== すべて選択 (非スクロール) ==&lt;br /&gt;
* 推奨割当「Ctrl + A」&lt;br /&gt;
* すべて選択時にスクロールしない（※通常は文書の末尾までスクロールする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶&lt;br /&gt;
Document.Selection.SelectAll();&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲を解除 (非スクロール) ==&lt;br /&gt;
* 推奨割り当て「Shift + Esc」または「Esc」 &amp;lt;br&amp;gt; ※「Ctrl + Esc」/「Ctrl + Shift + Esc」は Windows の予約済みショートカットキー（スタートメニュー / タスクマネージャ） &amp;lt;br&amp;gt; ※ 通常、選択範囲の解除は「矢印キー」でもできるが、その場合カーソル位置まで画面がスクロールする&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.Collapse( meCollapseEnd );	// 選択範囲の先頭にカーソルを残して解除するなら ( meCollapseStart )&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
選択範囲の先頭/末尾によらず、アクティブなキャレット位置のまま解除するなら…&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.SetActivePos( document.selection.GetActivePos() );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
・2018/10/08追加 (sukemaru)&lt;br /&gt;
・2018/10/16加筆 (sukemaru)&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加切り取り ==&lt;br /&gt;
* 割当例「Shift + Ctrl + X」など&lt;br /&gt;
* クリップボードに追加する切り取り&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Cut();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加コピー ==&lt;br /&gt;
* 割当例「Shift + Ctrl + C」など&lt;br /&gt;
* クリップボードに追加するコピー&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を複製 ==&lt;br /&gt;
* 割当例「Ctrl + D」「Ctrl + Insert」など&lt;br /&gt;
* カーソル行（論理行）を複製する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.DuplicateLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 複数行を複製するばあいは、マクロ「[[行を複製 (複数行可)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を上下に複製 ==&lt;br /&gt;
* 割当例「Shift + Alt + U」「Shift + Alt + [」／「Shift + Alt + D」「Shift + Alt + ]」など（AtomやVSCodeの動作を意識しています）&lt;br /&gt;
→マクロ「[[行を複製 (複数行可)]]」&lt;br /&gt;
&lt;br /&gt;
== 行を上下に移動 ==&lt;br /&gt;
* 割当例「Alt + U」「Alt + [」／「Alt + D」「Alt + ]」など&lt;br /&gt;
→マクロ「[[行を上下に移動（Mery 2.7 用）]]」&lt;br /&gt;
&lt;br /&gt;
== 行を削除 ==&lt;br /&gt;
* 割当例「Ctrl + E」「Ctrl + Delete」など&lt;br /&gt;
* カーソル行（論理行）を削除する&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から同様の機能を持つ「行削除」が追加されました&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.Delete();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行頭／行末まで削除 ==&lt;br /&gt;
* 論理行の行頭／行末まで削除したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から追加された「行左削除」「行右削除」で、論理行の行頭／行末までの削除ができます&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 割当例「Shift + BackSpace」など&lt;br /&gt;
* カーソル位置から行頭（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Shift + Delete」など&lt;br /&gt;
* カーソル位置から行末（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  EndOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 定型文をファイルから挿入 ==&lt;br /&gt;
* 割り当て例「Ctrl + I」「Ctrl + @」など&lt;br /&gt;
* 文書の雛形用の定型文や署名（連絡先、コピーライト）などのテンプレートを、別途用意したテキストファイルから取り込む&lt;br /&gt;
* あらかじめ定型文用のテキストファイルを用意しておくこと&lt;br /&gt;
→ ref. [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]] の「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文（署名）を追加|定型文（署名）を追加]]」 （※「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文つき新規ドキュメント|定型文つき新規ドキュメント]]」を新規タブで開くソースコードもあります）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;定型文を追加&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;定型文をファイルから挿入&amp;quot;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
挿入したテンプレート部分の先頭にカーソルを移動させるなら以下のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
var pos = document.selection.GetActivePos();&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
document.selection.SetActivePos( pos );		// キャレットをマクロ開始前の座標に戻す&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 括弧で挟む ==&lt;br /&gt;
* 割当例「Ctrl + 8」「Ctrl + [ 」など&lt;br /&gt;
* カーソル位置or選択範囲を指定の文字列で挟む&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var prefix = &amp;quot;(&amp;quot;;	//前に付ける文字列&lt;br /&gt;
var suffix = &amp;quot;)&amp;quot;;	//後に付ける文字列&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  Text = prefix + Text + suffix;&lt;br /&gt;
  SetActivePos(GetActivePos() - suffix.length);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲 なし&#039;&#039;&#039; のときと &#039;&#039;&#039;あり&#039;&#039;&#039; のときとで変えたいばあいは、マクロ「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (ポップアップメニューなし)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 逆インデント (単一行対応) ==&lt;br /&gt;
* 推奨割当「Shift + Tab」&lt;br /&gt;
* 複数行選択でない場合でも逆インデントする（※通常はタブ挿入）&lt;br /&gt;
* 複数行選択でない場合は、カーソルの位置関係を維持します&lt;br /&gt;
→ マクロ「[[非選択状態でも逆インデント]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.Text.indexOf(&amp;quot;\n&amp;quot;) &amp;lt; 0) {&lt;br /&gt;
  var x = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
  sel.SelectLine();&lt;br /&gt;
  var n = sel.Text.length;&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 位置関係を維持しない（行選択する）場合は下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!/\n/.test(Document.Selection.Text)) Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.UnIndent();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付と時刻 (メモ帳仕様) ==&lt;br /&gt;
* 推奨割当「F5」&lt;br /&gt;
* メモ帳のように「時刻 日付」の順で現在日時を挿入（※通常は「日付 時刻」の順）&lt;br /&gt;
→ マクロ「[[日付と時刻を挿入]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.InsertDate(meDateTimeDate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上書き保存 (UAC対応) ==&lt;br /&gt;
* 推奨割当「Ctrl + S」&lt;br /&gt;
* UAC が必要な場合は権限昇格して保存&lt;br /&gt;
→ マクロ「[[上書き保存(UAC対応)]]」&lt;br /&gt;
&lt;br /&gt;
== 元に戻す ==&lt;br /&gt;
* 推奨割当「Ctrl + Z」&lt;br /&gt;
* 「元に戻す」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== やり直し ==&lt;br /&gt;
* 推奨割当「Ctrl + Y」&lt;br /&gt;
* 「やり直し」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== 上移動 (先頭行では行頭へ) ==&lt;br /&gt;
* 推奨割当「Up (↑)」&lt;br /&gt;
* 上の行がそれ以上存在しない場合は、行頭（文書の先頭）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;gt; 1) {&lt;br /&gt;
  sel.LineUp();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.StartOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 下移動 (最終行では行末へ) ==&lt;br /&gt;
* 推奨割当「Down (↓)」&lt;br /&gt;
* 下の行がそれ以上存在しない場合は、行末（文書の末尾）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;lt; Document.GetLines(meGetLineView)) {&lt;br /&gt;
  sel.LineDown();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.EndOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 対応する括弧に移動 ==&lt;br /&gt;
* 割当例「Ctrl + [ 」「Ctrl + ] 」など&lt;br /&gt;
* カーソル右側に括弧がある場合、対応する括弧に移動する&lt;br /&gt;
→ マクロ「[[対応する括弧に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 行頭に移動 (インデント対応) ==&lt;br /&gt;
* 推奨割当「Home」「Shift + Home」&lt;br /&gt;
* インデント位置＜カーソル位置の場合は、インデント位置に移動する&lt;br /&gt;
* カーソル位置≦インデント位置の場合は、行頭に移動する&lt;br /&gt;
→ マクロ「[[行頭に移動]]」、「[[行頭か行末 または 選択範囲の始点か終点]]」&lt;br /&gt;
&lt;br /&gt;
トグルなしでただ移動したい場合は下記のコードで　　選択したい時は最後のs.StartOfLineを&#039;&#039;&#039;true&#039;&#039;&#039;に書き換えてください&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var d = document, s = document.selection;&lt;br /&gt;
&lt;br /&gt;
Redraw = false;&lt;br /&gt;
var x = s.GetActivePointX( mePosLogical ), y = s.GetActivePointY( mePosLogical ), pos = s.GetActivePos()&lt;br /&gt;
var top = pos + 1 - x;      // 行頭位置&lt;br /&gt;
var st = d.GetLine( y, 0 );&lt;br /&gt;
var sId = st.search( /[^　 \s]/ );      // 行頭の空白文字数&lt;br /&gt;
var ind = top + sId;                    // インデントの後ろ位置&lt;br /&gt;
&lt;br /&gt;
if ( ind &amp;lt; pos ) {s.SetActivePos( ind );&lt;br /&gt;
} else {&lt;br /&gt;
    s.StartOfLine( false, mePosLogical );}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 文書の1/4上に／下に移動 ==&lt;br /&gt;
* 割当例「Ctrl + PageUp」など&lt;br /&gt;
* 総表示行数の1/4分、上に移動する（4回の移動で文書頭の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineUp(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Ctrl + PageDown」など&lt;br /&gt;
* 総表示行数の1/4分、下に移動する（4回の移動で文書末の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineDown(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲の始点終点を交替 ==&lt;br /&gt;
* 選択範囲の始点と終点（カーソル位置）を入れ替える&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  var acp = GetActivePos();&lt;br /&gt;
  SetActivePos(GetAnchorPos());&lt;br /&gt;
  SetAnchorPos(acp);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== この文字列を検索 ==&lt;br /&gt;
* 「次／前の文字列を検索」時に移動しない（※通常は次／前に移動する）&lt;br /&gt;
* 範囲選択時は選択文字列で、非選択時は単語選択してから検索を実行します&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  if (IsEmpty) SelectWord();&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY, acp = GetActivePos(), anp = GetAnchorPos();&lt;br /&gt;
  Find(Text, meFindReplaceCase + meFindNext + meFindAround);&lt;br /&gt;
  SetActivePos(acp); SetAnchorPos(anp); ScrollX = sx; ScrollY = sy;&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 標準の移動／選択操作 =&lt;br /&gt;
カーソル移動などは通常、キー割り当てを変更することはできませんが、機能を再現したマクロにキー割り当てすることで実現できます。&lt;br /&gt;
* 範囲選択版は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上／下／左／右 ==&lt;br /&gt;
;上移動 / 下移動&lt;br /&gt;
* 標準の割当「Up (↑)」／選択版の割当「Shift + Up (↑)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Down (↓)」／選択版の割当「Shift + Down (↓)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左移動 / 右移動&lt;br /&gt;
* 標準の割当「Left (←)」／選択版の割当「Shift + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Right (→)」／選択版の割当「Shift + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上頁／下頁／左単語／右単語 ==&lt;br /&gt;
;1ページ上に移動 / 1ページ下に移動&lt;br /&gt;
* 標準の割当「PageUp」／選択版の割当「Shift + PageUp」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「PageDown」／選択版の割当「Shift + PageDown」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左の単語に移動 / 右の単語に移動&lt;br /&gt;
* 標準の割当「Ctrl + Left (←)」／選択版の割当「Shift + Ctrl + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + Right (→)」／選択版の割当「Shift + Ctrl + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 行頭／行末／文書頭／文書末 ==&lt;br /&gt;
;行頭に移動 / 行末に移動 (表示行)&lt;br /&gt;
* 論理行の行頭／行末に移動したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 標準の割当「Home」／選択版の割当「Shift + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「End」／選択版の割当「Shift + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;文書の先頭に移動 / 文書の末尾に移動&lt;br /&gt;
* 標準の割当「Ctrl + Home」／選択版の割当「Shift + Ctrl + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + End」／選択版の割当「Shift + Ctrl + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 単語を選択 ==&lt;br /&gt;
* マウス操作「文字をダブルクリック」&lt;br /&gt;
* カーソル位置にある単語（連続する英数字・かな・カナ・漢字）を選択する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectWord();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を選択 (論理行／表示行) ==&lt;br /&gt;
* マウス操作「文字をトリプルクリック」&lt;br /&gt;
* カーソル行（論理行）を選択する（カーソルは次行行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* マウス操作「行番号をクリック」&lt;br /&gt;
* カーソル行（表示行）を選択する（カーソルは行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  EndOfLine(false, mePosView);&lt;br /&gt;
  if (Document.Text.charAt(GetActivePos())===&amp;quot;\n&amp;quot;)&lt;br /&gt;
    SetAnchorPos(GetActivePos()+1); //行末が改行の場合、改行も含める&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 行末の改行を含めないなら、マクロ「[[マテリアルデザインっぽいアイコンと『小マクロ集』#論理行を選択する (改行を含まない) ※複数行可|論理行を選択する (改行を含まない)]]」／「[[マテリアルデザインっぽいアイコンと『小マクロ集』#表示行を選択する (改行を含まない)|表示行を選択する (改行を含まない)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ご意見・ご要望 =&lt;br /&gt;
何かありましたら，右の [編集] から追記してください．対応するかもしれません．&lt;br /&gt;
&lt;br /&gt;
* 行を上下に移動・複製&lt;br /&gt;
&lt;br /&gt;
AtomやVisual Studio Codeにある、「Alt＋↑／↓」で行を上下に移動、また「Alt＋Shift＋↑／↓」で上下に複製というのはできるでしょうか？自分で書いてみたところ論理行ではなく表示行のみが移動してしまいうまくいきませんでした。&lt;br /&gt;
&lt;br /&gt;
なおAlt＋矢印キーがMeryでは効かないことは存じておりますので、キーバインドは何か別のもの（Alt+U、Dとか）にする必要があると思います。&lt;br /&gt;
&lt;br /&gt;
(2020.05.22 isari)自己解決しました。sukemaruさんが「[[行を上下に移動（Mery 2.7 用）]]」マクロ等で実現なさっていましたので、その旨上のキーアサインにも追加いたしました。（[[キーアサイン集#行を上下に複製|行を上下に複製]]など）&lt;br /&gt;
----&lt;br /&gt;
* [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]]へのリンクと、マクロ「[[#定型文をファイルから挿入]]」「[[#コピーして選択範囲を解除]]」「[[#選択範囲を解除 (非スクロール)]]」を追加しました。&amp;lt;br&amp;gt;このページに不適切でしたら削除します。(2018/10/08 sukemaru)&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5107</id>
		<title>キーアサイン集</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5107"/>
		<updated>2020-05-21T19:57:01Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* ご意見・ご要望 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;キーアサイン(キーボードの割り当て)集です．&amp;lt;br&amp;gt;&lt;br /&gt;
「従来動作＋α」または「別エディタの動作を模倣」を基本とします．&amp;lt;br&amp;gt;&lt;br /&gt;
他に良いと思われるキーアサインがあれば是非ご投稿ください．&lt;br /&gt;
* デフォルトのメニュー内コマンドのキーアサインは、[[ヘルプ:目次|ヘルプ]]の 「[[ヘルプ:目次#キーボードマップ|キーボードマップ]]」 を参照&lt;br /&gt;
* マクロをアイコン化してツールバーに配置するばあいは、「[[マテリアルデザインっぽいアイコンと『小マクロ集』]]」 を参照 &amp;lt;!-- ２行追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 注意点 =&lt;br /&gt;
* 「Alt + 矢印キー」は、開発環境の仕様制限により、キーを割り当てても動作しません（参考フォーラム→ [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2399 2013/12/23] [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=1078 2010/01/20]）。&lt;br /&gt;
&lt;br /&gt;
= キーアサイン =&lt;br /&gt;
== バックスペース ==&lt;br /&gt;
* 推奨割当「Ctrl + BackSpace」&lt;br /&gt;
* バックスペース処理をする（※通常は制御文字 DEL (0x007F) が挿入される）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Editor.ActiveDocument.Selection;&lt;br /&gt;
if (sel.IsEmpty) {&lt;br /&gt;
  sel.DeleteLeft(1);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 強制改行 (インデント無効) ==&lt;br /&gt;
* 推奨割当「Shift + Enter」「Ctrl + Enter」&lt;br /&gt;
* 自動インデントを無視して改行する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Write(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 切り取り (行切り取り無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + X」「Shift + Delete」&lt;br /&gt;
* 非選択時にカーソル行（論理行）を切り取りしない（※通常は行切り取りする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Cut();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時にカーソル行（論理行）をコピーしない（※通常は行コピーする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー時選択) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時コピー（行コピー）時にコピーした範囲を選択する（※通常は範囲選択しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピーして選択範囲を解除 ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 選択範囲ありでコピーしたときは選択範囲を解除する（※通常は選択解除しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.selection.Copy();&lt;br /&gt;
document.selection.Collapse( meCollapseStart );	// 選択範囲の開始位置にカーソルを移動&lt;br /&gt;
// 選択範囲の始点にカーソルを移動させて解除するなら ( meCollapseStart )&lt;br /&gt;
// 選択範囲の終点にカーソルを移動させて解除するなら ( meCollapseEnd )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== すべて選択 (非スクロール) ==&lt;br /&gt;
* 推奨割当「Ctrl + A」&lt;br /&gt;
* すべて選択時にスクロールしない（※通常は文書の末尾までスクロールする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶&lt;br /&gt;
Document.Selection.SelectAll();&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲を解除 (非スクロール) ==&lt;br /&gt;
* 推奨割り当て「Shift + Esc」または「Esc」 &amp;lt;br&amp;gt; ※「Ctrl + Esc」/「Ctrl + Shift + Esc」は Windows の予約済みショートカットキー（スタートメニュー / タスクマネージャ） &amp;lt;br&amp;gt; ※ 通常、選択範囲の解除は「矢印キー」でもできるが、その場合カーソル位置まで画面がスクロールする&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.Collapse( meCollapseEnd );	// 選択範囲の先頭にカーソルを残して解除するなら ( meCollapseStart )&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
選択範囲の先頭/末尾によらず、アクティブなキャレット位置のまま解除するなら…&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.SetActivePos( document.selection.GetActivePos() );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
・2018/10/08追加 (sukemaru)&lt;br /&gt;
・2018/10/16加筆 (sukemaru)&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加切り取り ==&lt;br /&gt;
* 割当例「Shift + Ctrl + X」など&lt;br /&gt;
* クリップボードに追加する切り取り&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Cut();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加コピー ==&lt;br /&gt;
* 割当例「Shift + Ctrl + C」など&lt;br /&gt;
* クリップボードに追加するコピー&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を複製 ==&lt;br /&gt;
* 割当例「Ctrl + D」「Ctrl + Insert」など&lt;br /&gt;
* カーソル行（論理行）を複製する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.DuplicateLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 複数行を複製するばあいは、マクロ「[[行を複製 (複数行可)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を上下に複製 ==&lt;br /&gt;
* 割当例「Shift + Alt + U」「Shift + Alt + [」／「Shift + Alt + D」「Shift + Alt + ]」など（AtomやVSCodeの動作を意識しています）&lt;br /&gt;
→マクロ「[[行を複製 (複数行可)]]」&lt;br /&gt;
&lt;br /&gt;
== 行を上下に移動 ==&lt;br /&gt;
* 割当例「Alt + U」「Alt + [」／「Alt + D」「Alt + ]」など&lt;br /&gt;
→マクロ「[[行を上下に移動（Mery 2.7 用）]]」&lt;br /&gt;
&lt;br /&gt;
== 行を削除 ==&lt;br /&gt;
* 割当例「Ctrl + E」「Ctrl + Delete」など&lt;br /&gt;
* カーソル行（論理行）を削除する&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から同様の機能を持つ「行削除」が追加されました&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.Delete();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行頭／行末まで削除 ==&lt;br /&gt;
* 論理行の行頭／行末まで削除したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から追加された「行左削除」「行右削除」で、論理行の行頭／行末までの削除ができます&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 割当例「Shift + BackSpace」など&lt;br /&gt;
* カーソル位置から行頭（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Shift + Delete」など&lt;br /&gt;
* カーソル位置から行末（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  EndOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 定型文をファイルから挿入 ==&lt;br /&gt;
* 割り当て例「Ctrl + I」「Ctrl + @」など&lt;br /&gt;
* 文書の雛形用の定型文や署名（連絡先、コピーライト）などのテンプレートを、別途用意したテキストファイルから取り込む&lt;br /&gt;
* あらかじめ定型文用のテキストファイルを用意しておくこと&lt;br /&gt;
→ ref. [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]] の「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文（署名）を追加|定型文（署名）を追加]]」 （※「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文つき新規ドキュメント|定型文つき新規ドキュメント]]」を新規タブで開くソースコードもあります）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;定型文を追加&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;定型文をファイルから挿入&amp;quot;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
挿入したテンプレート部分の先頭にカーソルを移動させるなら以下のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
var pos = document.selection.GetActivePos();&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
document.selection.SetActivePos( pos );		// キャレットをマクロ開始前の座標に戻す&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 括弧で挟む ==&lt;br /&gt;
* 割当例「Ctrl + 8」「Ctrl + [ 」など&lt;br /&gt;
* カーソル位置or選択範囲を指定の文字列で挟む&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var prefix = &amp;quot;(&amp;quot;;	//前に付ける文字列&lt;br /&gt;
var suffix = &amp;quot;)&amp;quot;;	//後に付ける文字列&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  Text = prefix + Text + suffix;&lt;br /&gt;
  SetActivePos(GetActivePos() - suffix.length);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲 なし&#039;&#039;&#039; のときと &#039;&#039;&#039;あり&#039;&#039;&#039; のときとで変えたいばあいは、マクロ「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (ポップアップメニューなし)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 逆インデント (単一行対応) ==&lt;br /&gt;
* 推奨割当「Shift + Tab」&lt;br /&gt;
* 複数行選択でない場合でも逆インデントする（※通常はタブ挿入）&lt;br /&gt;
* 複数行選択でない場合は、カーソルの位置関係を維持します&lt;br /&gt;
→ マクロ「[[非選択状態でも逆インデント]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.Text.indexOf(&amp;quot;\n&amp;quot;) &amp;lt; 0) {&lt;br /&gt;
  var x = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
  sel.SelectLine();&lt;br /&gt;
  var n = sel.Text.length;&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 位置関係を維持しない（行選択する）場合は下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!/\n/.test(Document.Selection.Text)) Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.UnIndent();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付と時刻 (メモ帳仕様) ==&lt;br /&gt;
* 推奨割当「F5」&lt;br /&gt;
* メモ帳のように「時刻 日付」の順で現在日時を挿入（※通常は「日付 時刻」の順）&lt;br /&gt;
→ マクロ「[[日付と時刻を挿入]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.InsertDate(meDateTimeDate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上書き保存 (UAC対応) ==&lt;br /&gt;
* 推奨割当「Ctrl + S」&lt;br /&gt;
* UAC が必要な場合は権限昇格して保存&lt;br /&gt;
→ マクロ「[[上書き保存(UAC対応)]]」&lt;br /&gt;
&lt;br /&gt;
== 元に戻す ==&lt;br /&gt;
* 推奨割当「Ctrl + Z」&lt;br /&gt;
* 「元に戻す」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== やり直し ==&lt;br /&gt;
* 推奨割当「Ctrl + Y」&lt;br /&gt;
* 「やり直し」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== 上移動 (先頭行では行頭へ) ==&lt;br /&gt;
* 推奨割当「Up (↑)」&lt;br /&gt;
* 上の行がそれ以上存在しない場合は、行頭（文書の先頭）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;gt; 1) {&lt;br /&gt;
  sel.LineUp();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.StartOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 下移動 (最終行では行末へ) ==&lt;br /&gt;
* 推奨割当「Down (↓)」&lt;br /&gt;
* 下の行がそれ以上存在しない場合は、行末（文書の末尾）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;lt; Document.GetLines(meGetLineView)) {&lt;br /&gt;
  sel.LineDown();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.EndOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 対応する括弧に移動 ==&lt;br /&gt;
* 割当例「Ctrl + [ 」「Ctrl + ] 」など&lt;br /&gt;
* カーソル右側に括弧がある場合、対応する括弧に移動する&lt;br /&gt;
→ マクロ「[[対応する括弧に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 行頭に移動 (インデント対応) ==&lt;br /&gt;
* 推奨割当「Home」「Shift + Home」&lt;br /&gt;
* インデント位置＜カーソル位置の場合は、インデント位置に移動する&lt;br /&gt;
* カーソル位置≦インデント位置の場合は、行頭に移動する&lt;br /&gt;
→ マクロ「[[行頭に移動]]」、「[[行頭か行末 または 選択範囲の始点か終点]]」&lt;br /&gt;
&lt;br /&gt;
トグルなしでただ移動したい場合は下記のコードで　　選択したい時は最後のs.StartOfLineを&#039;&#039;&#039;true&#039;&#039;&#039;に書き換えてください&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var d = document, s = document.selection;&lt;br /&gt;
&lt;br /&gt;
Redraw = false;&lt;br /&gt;
var x = s.GetActivePointX( mePosLogical ), y = s.GetActivePointY( mePosLogical ), pos = s.GetActivePos()&lt;br /&gt;
var top = pos + 1 - x;      // 行頭位置&lt;br /&gt;
var st = d.GetLine( y, 0 );&lt;br /&gt;
var sId = st.search( /[^　 \s]/ );      // 行頭の空白文字数&lt;br /&gt;
var ind = top + sId;                    // インデントの後ろ位置&lt;br /&gt;
&lt;br /&gt;
if ( ind &amp;lt; pos ) {&lt;br /&gt;
    s.SetActivePos( ind );&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    s.StartOfLine( false, mePosLogical );&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 文書の1/4上に／下に移動 ==&lt;br /&gt;
* 割当例「Ctrl + PageUp」など&lt;br /&gt;
* 総表示行数の1/4分、上に移動する（4回の移動で文書頭の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineUp(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Ctrl + PageDown」など&lt;br /&gt;
* 総表示行数の1/4分、下に移動する（4回の移動で文書末の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineDown(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲の始点終点を交替 ==&lt;br /&gt;
* 選択範囲の始点と終点（カーソル位置）を入れ替える&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  var acp = GetActivePos();&lt;br /&gt;
  SetActivePos(GetAnchorPos());&lt;br /&gt;
  SetAnchorPos(acp);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== この文字列を検索 ==&lt;br /&gt;
* 「次／前の文字列を検索」時に移動しない（※通常は次／前に移動する）&lt;br /&gt;
* 範囲選択時は選択文字列で、非選択時は単語選択してから検索を実行します&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  if (IsEmpty) SelectWord();&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY, acp = GetActivePos(), anp = GetAnchorPos();&lt;br /&gt;
  Find(Text, meFindReplaceCase + meFindNext + meFindAround);&lt;br /&gt;
  SetActivePos(acp); SetAnchorPos(anp); ScrollX = sx; ScrollY = sy;&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 標準の移動／選択操作 =&lt;br /&gt;
カーソル移動などは通常、キー割り当てを変更することはできませんが、機能を再現したマクロにキー割り当てすることで実現できます。&lt;br /&gt;
* 範囲選択版は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上／下／左／右 ==&lt;br /&gt;
;上移動 / 下移動&lt;br /&gt;
* 標準の割当「Up (↑)」／選択版の割当「Shift + Up (↑)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Down (↓)」／選択版の割当「Shift + Down (↓)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左移動 / 右移動&lt;br /&gt;
* 標準の割当「Left (←)」／選択版の割当「Shift + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Right (→)」／選択版の割当「Shift + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上頁／下頁／左単語／右単語 ==&lt;br /&gt;
;1ページ上に移動 / 1ページ下に移動&lt;br /&gt;
* 標準の割当「PageUp」／選択版の割当「Shift + PageUp」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「PageDown」／選択版の割当「Shift + PageDown」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左の単語に移動 / 右の単語に移動&lt;br /&gt;
* 標準の割当「Ctrl + Left (←)」／選択版の割当「Shift + Ctrl + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + Right (→)」／選択版の割当「Shift + Ctrl + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 行頭／行末／文書頭／文書末 ==&lt;br /&gt;
;行頭に移動 / 行末に移動 (表示行)&lt;br /&gt;
* 論理行の行頭／行末に移動したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 標準の割当「Home」／選択版の割当「Shift + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「End」／選択版の割当「Shift + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;文書の先頭に移動 / 文書の末尾に移動&lt;br /&gt;
* 標準の割当「Ctrl + Home」／選択版の割当「Shift + Ctrl + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + End」／選択版の割当「Shift + Ctrl + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 単語を選択 ==&lt;br /&gt;
* マウス操作「文字をダブルクリック」&lt;br /&gt;
* カーソル位置にある単語（連続する英数字・かな・カナ・漢字）を選択する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectWord();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を選択 (論理行／表示行) ==&lt;br /&gt;
* マウス操作「文字をトリプルクリック」&lt;br /&gt;
* カーソル行（論理行）を選択する（カーソルは次行行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* マウス操作「行番号をクリック」&lt;br /&gt;
* カーソル行（表示行）を選択する（カーソルは行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  EndOfLine(false, mePosView);&lt;br /&gt;
  if (Document.Text.charAt(GetActivePos())===&amp;quot;\n&amp;quot;)&lt;br /&gt;
    SetAnchorPos(GetActivePos()+1); //行末が改行の場合、改行も含める&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 行末の改行を含めないなら、マクロ「[[マテリアルデザインっぽいアイコンと『小マクロ集』#論理行を選択する (改行を含まない) ※複数行可|論理行を選択する (改行を含まない)]]」／「[[マテリアルデザインっぽいアイコンと『小マクロ集』#表示行を選択する (改行を含まない)|表示行を選択する (改行を含まない)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ご意見・ご要望 =&lt;br /&gt;
何かありましたら，右の [編集] から追記してください．対応するかもしれません．&lt;br /&gt;
&lt;br /&gt;
* 行を上下に移動・複製&lt;br /&gt;
&lt;br /&gt;
AtomやVisual Studio Codeにある、「Alt＋↑／↓」で行を上下に移動、また「Alt＋Shift＋↑／↓」で上下に複製というのはできるでしょうか？自分で書いてみたところ論理行ではなく表示行のみが移動してしまいうまくいきませんでした。&lt;br /&gt;
&lt;br /&gt;
なおAlt＋矢印キーがMeryでは効かないことは存じておりますので、キーバインドは何か別のもの（Alt+U、Dとか）にする必要があると思います。&lt;br /&gt;
&lt;br /&gt;
(2020.05.22 isari)自己解決しました。sukemaruさんが「[[行を上下に移動（Mery 2.7 用）]]」マクロ等で実現なさっていましたので、その旨上のキーアサインにも追加いたしました。（[[キーアサイン集#行を上下に複製|行を上下に複製]]など）&lt;br /&gt;
----&lt;br /&gt;
* [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]]へのリンクと、マクロ「[[#定型文をファイルから挿入]]」「[[#コピーして選択範囲を解除]]」「[[#選択範囲を解除 (非スクロール)]]」を追加しました。&amp;lt;br&amp;gt;このページに不適切でしたら削除します。(2018/10/08 sukemaru)&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5106</id>
		<title>キーアサイン集</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5106"/>
		<updated>2020-05-21T19:55:58Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* ご意見・ご要望 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;キーアサイン(キーボードの割り当て)集です．&amp;lt;br&amp;gt;&lt;br /&gt;
「従来動作＋α」または「別エディタの動作を模倣」を基本とします．&amp;lt;br&amp;gt;&lt;br /&gt;
他に良いと思われるキーアサインがあれば是非ご投稿ください．&lt;br /&gt;
* デフォルトのメニュー内コマンドのキーアサインは、[[ヘルプ:目次|ヘルプ]]の 「[[ヘルプ:目次#キーボードマップ|キーボードマップ]]」 を参照&lt;br /&gt;
* マクロをアイコン化してツールバーに配置するばあいは、「[[マテリアルデザインっぽいアイコンと『小マクロ集』]]」 を参照 &amp;lt;!-- ２行追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 注意点 =&lt;br /&gt;
* 「Alt + 矢印キー」は、開発環境の仕様制限により、キーを割り当てても動作しません（参考フォーラム→ [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2399 2013/12/23] [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=1078 2010/01/20]）。&lt;br /&gt;
&lt;br /&gt;
= キーアサイン =&lt;br /&gt;
== バックスペース ==&lt;br /&gt;
* 推奨割当「Ctrl + BackSpace」&lt;br /&gt;
* バックスペース処理をする（※通常は制御文字 DEL (0x007F) が挿入される）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Editor.ActiveDocument.Selection;&lt;br /&gt;
if (sel.IsEmpty) {&lt;br /&gt;
  sel.DeleteLeft(1);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 強制改行 (インデント無効) ==&lt;br /&gt;
* 推奨割当「Shift + Enter」「Ctrl + Enter」&lt;br /&gt;
* 自動インデントを無視して改行する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Write(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 切り取り (行切り取り無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + X」「Shift + Delete」&lt;br /&gt;
* 非選択時にカーソル行（論理行）を切り取りしない（※通常は行切り取りする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Cut();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時にカーソル行（論理行）をコピーしない（※通常は行コピーする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー時選択) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時コピー（行コピー）時にコピーした範囲を選択する（※通常は範囲選択しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピーして選択範囲を解除 ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 選択範囲ありでコピーしたときは選択範囲を解除する（※通常は選択解除しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.selection.Copy();&lt;br /&gt;
document.selection.Collapse( meCollapseStart );	// 選択範囲の開始位置にカーソルを移動&lt;br /&gt;
// 選択範囲の始点にカーソルを移動させて解除するなら ( meCollapseStart )&lt;br /&gt;
// 選択範囲の終点にカーソルを移動させて解除するなら ( meCollapseEnd )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== すべて選択 (非スクロール) ==&lt;br /&gt;
* 推奨割当「Ctrl + A」&lt;br /&gt;
* すべて選択時にスクロールしない（※通常は文書の末尾までスクロールする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶&lt;br /&gt;
Document.Selection.SelectAll();&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲を解除 (非スクロール) ==&lt;br /&gt;
* 推奨割り当て「Shift + Esc」または「Esc」 &amp;lt;br&amp;gt; ※「Ctrl + Esc」/「Ctrl + Shift + Esc」は Windows の予約済みショートカットキー（スタートメニュー / タスクマネージャ） &amp;lt;br&amp;gt; ※ 通常、選択範囲の解除は「矢印キー」でもできるが、その場合カーソル位置まで画面がスクロールする&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.Collapse( meCollapseEnd );	// 選択範囲の先頭にカーソルを残して解除するなら ( meCollapseStart )&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
選択範囲の先頭/末尾によらず、アクティブなキャレット位置のまま解除するなら…&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.SetActivePos( document.selection.GetActivePos() );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
・2018/10/08追加 (sukemaru)&lt;br /&gt;
・2018/10/16加筆 (sukemaru)&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加切り取り ==&lt;br /&gt;
* 割当例「Shift + Ctrl + X」など&lt;br /&gt;
* クリップボードに追加する切り取り&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Cut();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加コピー ==&lt;br /&gt;
* 割当例「Shift + Ctrl + C」など&lt;br /&gt;
* クリップボードに追加するコピー&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を複製 ==&lt;br /&gt;
* 割当例「Ctrl + D」「Ctrl + Insert」など&lt;br /&gt;
* カーソル行（論理行）を複製する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.DuplicateLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 複数行を複製するばあいは、マクロ「[[行を複製 (複数行可)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を上下に複製 ==&lt;br /&gt;
* 割当例「Shift + Alt + U」「Shift + Alt + [」／「Shift + Alt + D」「Shift + Alt + ]」など（AtomやVSCodeの動作を意識しています）&lt;br /&gt;
→マクロ「[[行を複製 (複数行可)]]」&lt;br /&gt;
&lt;br /&gt;
== 行を上下に移動 ==&lt;br /&gt;
* 割当例「Alt + U」「Alt + [」／「Alt + D」「Alt + ]」など&lt;br /&gt;
→マクロ「[[行を上下に移動（Mery 2.7 用）]]」&lt;br /&gt;
&lt;br /&gt;
== 行を削除 ==&lt;br /&gt;
* 割当例「Ctrl + E」「Ctrl + Delete」など&lt;br /&gt;
* カーソル行（論理行）を削除する&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から同様の機能を持つ「行削除」が追加されました&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.Delete();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行頭／行末まで削除 ==&lt;br /&gt;
* 論理行の行頭／行末まで削除したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から追加された「行左削除」「行右削除」で、論理行の行頭／行末までの削除ができます&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 割当例「Shift + BackSpace」など&lt;br /&gt;
* カーソル位置から行頭（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Shift + Delete」など&lt;br /&gt;
* カーソル位置から行末（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  EndOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 定型文をファイルから挿入 ==&lt;br /&gt;
* 割り当て例「Ctrl + I」「Ctrl + @」など&lt;br /&gt;
* 文書の雛形用の定型文や署名（連絡先、コピーライト）などのテンプレートを、別途用意したテキストファイルから取り込む&lt;br /&gt;
* あらかじめ定型文用のテキストファイルを用意しておくこと&lt;br /&gt;
→ ref. [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]] の「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文（署名）を追加|定型文（署名）を追加]]」 （※「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文つき新規ドキュメント|定型文つき新規ドキュメント]]」を新規タブで開くソースコードもあります）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;定型文を追加&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;定型文をファイルから挿入&amp;quot;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
挿入したテンプレート部分の先頭にカーソルを移動させるなら以下のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
var pos = document.selection.GetActivePos();&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
document.selection.SetActivePos( pos );		// キャレットをマクロ開始前の座標に戻す&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 括弧で挟む ==&lt;br /&gt;
* 割当例「Ctrl + 8」「Ctrl + [ 」など&lt;br /&gt;
* カーソル位置or選択範囲を指定の文字列で挟む&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var prefix = &amp;quot;(&amp;quot;;	//前に付ける文字列&lt;br /&gt;
var suffix = &amp;quot;)&amp;quot;;	//後に付ける文字列&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  Text = prefix + Text + suffix;&lt;br /&gt;
  SetActivePos(GetActivePos() - suffix.length);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲 なし&#039;&#039;&#039; のときと &#039;&#039;&#039;あり&#039;&#039;&#039; のときとで変えたいばあいは、マクロ「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (ポップアップメニューなし)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 逆インデント (単一行対応) ==&lt;br /&gt;
* 推奨割当「Shift + Tab」&lt;br /&gt;
* 複数行選択でない場合でも逆インデントする（※通常はタブ挿入）&lt;br /&gt;
* 複数行選択でない場合は、カーソルの位置関係を維持します&lt;br /&gt;
→ マクロ「[[非選択状態でも逆インデント]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.Text.indexOf(&amp;quot;\n&amp;quot;) &amp;lt; 0) {&lt;br /&gt;
  var x = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
  sel.SelectLine();&lt;br /&gt;
  var n = sel.Text.length;&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 位置関係を維持しない（行選択する）場合は下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!/\n/.test(Document.Selection.Text)) Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.UnIndent();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付と時刻 (メモ帳仕様) ==&lt;br /&gt;
* 推奨割当「F5」&lt;br /&gt;
* メモ帳のように「時刻 日付」の順で現在日時を挿入（※通常は「日付 時刻」の順）&lt;br /&gt;
→ マクロ「[[日付と時刻を挿入]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.InsertDate(meDateTimeDate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上書き保存 (UAC対応) ==&lt;br /&gt;
* 推奨割当「Ctrl + S」&lt;br /&gt;
* UAC が必要な場合は権限昇格して保存&lt;br /&gt;
→ マクロ「[[上書き保存(UAC対応)]]」&lt;br /&gt;
&lt;br /&gt;
== 元に戻す ==&lt;br /&gt;
* 推奨割当「Ctrl + Z」&lt;br /&gt;
* 「元に戻す」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== やり直し ==&lt;br /&gt;
* 推奨割当「Ctrl + Y」&lt;br /&gt;
* 「やり直し」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== 上移動 (先頭行では行頭へ) ==&lt;br /&gt;
* 推奨割当「Up (↑)」&lt;br /&gt;
* 上の行がそれ以上存在しない場合は、行頭（文書の先頭）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;gt; 1) {&lt;br /&gt;
  sel.LineUp();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.StartOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 下移動 (最終行では行末へ) ==&lt;br /&gt;
* 推奨割当「Down (↓)」&lt;br /&gt;
* 下の行がそれ以上存在しない場合は、行末（文書の末尾）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;lt; Document.GetLines(meGetLineView)) {&lt;br /&gt;
  sel.LineDown();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.EndOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 対応する括弧に移動 ==&lt;br /&gt;
* 割当例「Ctrl + [ 」「Ctrl + ] 」など&lt;br /&gt;
* カーソル右側に括弧がある場合、対応する括弧に移動する&lt;br /&gt;
→ マクロ「[[対応する括弧に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 行頭に移動 (インデント対応) ==&lt;br /&gt;
* 推奨割当「Home」「Shift + Home」&lt;br /&gt;
* インデント位置＜カーソル位置の場合は、インデント位置に移動する&lt;br /&gt;
* カーソル位置≦インデント位置の場合は、行頭に移動する&lt;br /&gt;
→ マクロ「[[行頭に移動]]」、「[[行頭か行末 または 選択範囲の始点か終点]]」&lt;br /&gt;
&lt;br /&gt;
トグルなしでただ移動したい場合は下記のコードで　　選択したい時は最後のs.StartOfLineを&#039;&#039;&#039;true&#039;&#039;&#039;に書き換えてください&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var d = document, s = document.selection;&lt;br /&gt;
&lt;br /&gt;
Redraw = false;&lt;br /&gt;
var x = s.GetActivePointX( mePosLogical ), y = s.GetActivePointY( mePosLogical ), pos = s.GetActivePos()&lt;br /&gt;
var top = pos + 1 - x;      // 行頭位置&lt;br /&gt;
var st = d.GetLine( y, 0 );&lt;br /&gt;
var sId = st.search( /[^　 \s]/ );      // 行頭の空白文字数&lt;br /&gt;
var ind = top + sId;                    // インデントの後ろ位置&lt;br /&gt;
&lt;br /&gt;
if ( ind &amp;lt; pos ) {&lt;br /&gt;
    s.SetActivePos( ind );&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    s.StartOfLine( false, mePosLogical );&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 文書の1/4上に／下に移動 ==&lt;br /&gt;
* 割当例「Ctrl + PageUp」など&lt;br /&gt;
* 総表示行数の1/4分、上に移動する（4回の移動で文書頭の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineUp(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Ctrl + PageDown」など&lt;br /&gt;
* 総表示行数の1/4分、下に移動する（4回の移動で文書末の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineDown(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲の始点終点を交替 ==&lt;br /&gt;
* 選択範囲の始点と終点（カーソル位置）を入れ替える&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  var acp = GetActivePos();&lt;br /&gt;
  SetActivePos(GetAnchorPos());&lt;br /&gt;
  SetAnchorPos(acp);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== この文字列を検索 ==&lt;br /&gt;
* 「次／前の文字列を検索」時に移動しない（※通常は次／前に移動する）&lt;br /&gt;
* 範囲選択時は選択文字列で、非選択時は単語選択してから検索を実行します&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  if (IsEmpty) SelectWord();&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY, acp = GetActivePos(), anp = GetAnchorPos();&lt;br /&gt;
  Find(Text, meFindReplaceCase + meFindNext + meFindAround);&lt;br /&gt;
  SetActivePos(acp); SetAnchorPos(anp); ScrollX = sx; ScrollY = sy;&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 標準の移動／選択操作 =&lt;br /&gt;
カーソル移動などは通常、キー割り当てを変更することはできませんが、機能を再現したマクロにキー割り当てすることで実現できます。&lt;br /&gt;
* 範囲選択版は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上／下／左／右 ==&lt;br /&gt;
;上移動 / 下移動&lt;br /&gt;
* 標準の割当「Up (↑)」／選択版の割当「Shift + Up (↑)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Down (↓)」／選択版の割当「Shift + Down (↓)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左移動 / 右移動&lt;br /&gt;
* 標準の割当「Left (←)」／選択版の割当「Shift + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Right (→)」／選択版の割当「Shift + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上頁／下頁／左単語／右単語 ==&lt;br /&gt;
;1ページ上に移動 / 1ページ下に移動&lt;br /&gt;
* 標準の割当「PageUp」／選択版の割当「Shift + PageUp」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「PageDown」／選択版の割当「Shift + PageDown」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左の単語に移動 / 右の単語に移動&lt;br /&gt;
* 標準の割当「Ctrl + Left (←)」／選択版の割当「Shift + Ctrl + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + Right (→)」／選択版の割当「Shift + Ctrl + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 行頭／行末／文書頭／文書末 ==&lt;br /&gt;
;行頭に移動 / 行末に移動 (表示行)&lt;br /&gt;
* 論理行の行頭／行末に移動したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 標準の割当「Home」／選択版の割当「Shift + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「End」／選択版の割当「Shift + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;文書の先頭に移動 / 文書の末尾に移動&lt;br /&gt;
* 標準の割当「Ctrl + Home」／選択版の割当「Shift + Ctrl + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + End」／選択版の割当「Shift + Ctrl + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 単語を選択 ==&lt;br /&gt;
* マウス操作「文字をダブルクリック」&lt;br /&gt;
* カーソル位置にある単語（連続する英数字・かな・カナ・漢字）を選択する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectWord();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を選択 (論理行／表示行) ==&lt;br /&gt;
* マウス操作「文字をトリプルクリック」&lt;br /&gt;
* カーソル行（論理行）を選択する（カーソルは次行行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* マウス操作「行番号をクリック」&lt;br /&gt;
* カーソル行（表示行）を選択する（カーソルは行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  EndOfLine(false, mePosView);&lt;br /&gt;
  if (Document.Text.charAt(GetActivePos())===&amp;quot;\n&amp;quot;)&lt;br /&gt;
    SetAnchorPos(GetActivePos()+1); //行末が改行の場合、改行も含める&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 行末の改行を含めないなら、マクロ「[[マテリアルデザインっぽいアイコンと『小マクロ集』#論理行を選択する (改行を含まない) ※複数行可|論理行を選択する (改行を含まない)]]」／「[[マテリアルデザインっぽいアイコンと『小マクロ集』#表示行を選択する (改行を含まない)|表示行を選択する (改行を含まない)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ご意見・ご要望 =&lt;br /&gt;
何かありましたら，右の [編集] から追記してください．対応するかもしれません．&lt;br /&gt;
&lt;br /&gt;
* 行を上下に移動・複製&lt;br /&gt;
&lt;br /&gt;
AtomやVisual Studio Codeにある、「Alt＋↑／↓」で行を上下に移動、また「Alt＋Shift＋↑／↓」で上下に複製というのはできるでしょうか？自分で書いてみたところ論理行ではなく表示行のみが移動してしまいうまくいきませんでした。&lt;br /&gt;
&lt;br /&gt;
なおAlt＋矢印キーがMeryでは効かないことは存じておりますので、キーバインドは何か別のもの（Alt+U、Dとか）にする必要があると思います。&lt;br /&gt;
&lt;br /&gt;
(2020.05.22)自己解決しました。sukemaruさんが「[[行を上下に移動（Mery 2.7 用）]]」マクロ等で実現なさっていましたので、その旨上のキーアサインにも追加いたしました。（[[キーアサイン集#行を上下に複製|行を上下に複製]]など）&lt;br /&gt;
----&lt;br /&gt;
* [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]]へのリンクと、マクロ「[[#定型文をファイルから挿入]]」「[[#コピーして選択範囲を解除]]」「[[#選択範囲を解除 (非スクロール)]]」を追加しました。&amp;lt;br&amp;gt;このページに不適切でしたら削除します。(2018/10/08 sukemaru)&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5105</id>
		<title>キーアサイン集</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5105"/>
		<updated>2020-05-21T19:45:13Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* 行頭に移動 (インデント対応) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;キーアサイン(キーボードの割り当て)集です．&amp;lt;br&amp;gt;&lt;br /&gt;
「従来動作＋α」または「別エディタの動作を模倣」を基本とします．&amp;lt;br&amp;gt;&lt;br /&gt;
他に良いと思われるキーアサインがあれば是非ご投稿ください．&lt;br /&gt;
* デフォルトのメニュー内コマンドのキーアサインは、[[ヘルプ:目次|ヘルプ]]の 「[[ヘルプ:目次#キーボードマップ|キーボードマップ]]」 を参照&lt;br /&gt;
* マクロをアイコン化してツールバーに配置するばあいは、「[[マテリアルデザインっぽいアイコンと『小マクロ集』]]」 を参照 &amp;lt;!-- ２行追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 注意点 =&lt;br /&gt;
* 「Alt + 矢印キー」は、開発環境の仕様制限により、キーを割り当てても動作しません（参考フォーラム→ [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2399 2013/12/23] [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=1078 2010/01/20]）。&lt;br /&gt;
&lt;br /&gt;
= キーアサイン =&lt;br /&gt;
== バックスペース ==&lt;br /&gt;
* 推奨割当「Ctrl + BackSpace」&lt;br /&gt;
* バックスペース処理をする（※通常は制御文字 DEL (0x007F) が挿入される）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Editor.ActiveDocument.Selection;&lt;br /&gt;
if (sel.IsEmpty) {&lt;br /&gt;
  sel.DeleteLeft(1);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 強制改行 (インデント無効) ==&lt;br /&gt;
* 推奨割当「Shift + Enter」「Ctrl + Enter」&lt;br /&gt;
* 自動インデントを無視して改行する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Write(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 切り取り (行切り取り無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + X」「Shift + Delete」&lt;br /&gt;
* 非選択時にカーソル行（論理行）を切り取りしない（※通常は行切り取りする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Cut();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時にカーソル行（論理行）をコピーしない（※通常は行コピーする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー時選択) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時コピー（行コピー）時にコピーした範囲を選択する（※通常は範囲選択しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピーして選択範囲を解除 ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 選択範囲ありでコピーしたときは選択範囲を解除する（※通常は選択解除しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.selection.Copy();&lt;br /&gt;
document.selection.Collapse( meCollapseStart );	// 選択範囲の開始位置にカーソルを移動&lt;br /&gt;
// 選択範囲の始点にカーソルを移動させて解除するなら ( meCollapseStart )&lt;br /&gt;
// 選択範囲の終点にカーソルを移動させて解除するなら ( meCollapseEnd )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== すべて選択 (非スクロール) ==&lt;br /&gt;
* 推奨割当「Ctrl + A」&lt;br /&gt;
* すべて選択時にスクロールしない（※通常は文書の末尾までスクロールする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶&lt;br /&gt;
Document.Selection.SelectAll();&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲を解除 (非スクロール) ==&lt;br /&gt;
* 推奨割り当て「Shift + Esc」または「Esc」 &amp;lt;br&amp;gt; ※「Ctrl + Esc」/「Ctrl + Shift + Esc」は Windows の予約済みショートカットキー（スタートメニュー / タスクマネージャ） &amp;lt;br&amp;gt; ※ 通常、選択範囲の解除は「矢印キー」でもできるが、その場合カーソル位置まで画面がスクロールする&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.Collapse( meCollapseEnd );	// 選択範囲の先頭にカーソルを残して解除するなら ( meCollapseStart )&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
選択範囲の先頭/末尾によらず、アクティブなキャレット位置のまま解除するなら…&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.SetActivePos( document.selection.GetActivePos() );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
・2018/10/08追加 (sukemaru)&lt;br /&gt;
・2018/10/16加筆 (sukemaru)&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加切り取り ==&lt;br /&gt;
* 割当例「Shift + Ctrl + X」など&lt;br /&gt;
* クリップボードに追加する切り取り&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Cut();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加コピー ==&lt;br /&gt;
* 割当例「Shift + Ctrl + C」など&lt;br /&gt;
* クリップボードに追加するコピー&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を複製 ==&lt;br /&gt;
* 割当例「Ctrl + D」「Ctrl + Insert」など&lt;br /&gt;
* カーソル行（論理行）を複製する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.DuplicateLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 複数行を複製するばあいは、マクロ「[[行を複製 (複数行可)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を上下に複製 ==&lt;br /&gt;
* 割当例「Shift + Alt + U」「Shift + Alt + [」／「Shift + Alt + D」「Shift + Alt + ]」など（AtomやVSCodeの動作を意識しています）&lt;br /&gt;
→マクロ「[[行を複製 (複数行可)]]」&lt;br /&gt;
&lt;br /&gt;
== 行を上下に移動 ==&lt;br /&gt;
* 割当例「Alt + U」「Alt + [」／「Alt + D」「Alt + ]」など&lt;br /&gt;
→マクロ「[[行を上下に移動（Mery 2.7 用）]]」&lt;br /&gt;
&lt;br /&gt;
== 行を削除 ==&lt;br /&gt;
* 割当例「Ctrl + E」「Ctrl + Delete」など&lt;br /&gt;
* カーソル行（論理行）を削除する&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から同様の機能を持つ「行削除」が追加されました&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.Delete();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行頭／行末まで削除 ==&lt;br /&gt;
* 論理行の行頭／行末まで削除したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から追加された「行左削除」「行右削除」で、論理行の行頭／行末までの削除ができます&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 割当例「Shift + BackSpace」など&lt;br /&gt;
* カーソル位置から行頭（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Shift + Delete」など&lt;br /&gt;
* カーソル位置から行末（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  EndOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 定型文をファイルから挿入 ==&lt;br /&gt;
* 割り当て例「Ctrl + I」「Ctrl + @」など&lt;br /&gt;
* 文書の雛形用の定型文や署名（連絡先、コピーライト）などのテンプレートを、別途用意したテキストファイルから取り込む&lt;br /&gt;
* あらかじめ定型文用のテキストファイルを用意しておくこと&lt;br /&gt;
→ ref. [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]] の「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文（署名）を追加|定型文（署名）を追加]]」 （※「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文つき新規ドキュメント|定型文つき新規ドキュメント]]」を新規タブで開くソースコードもあります）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;定型文を追加&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;定型文をファイルから挿入&amp;quot;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
挿入したテンプレート部分の先頭にカーソルを移動させるなら以下のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
var pos = document.selection.GetActivePos();&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
document.selection.SetActivePos( pos );		// キャレットをマクロ開始前の座標に戻す&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 括弧で挟む ==&lt;br /&gt;
* 割当例「Ctrl + 8」「Ctrl + [ 」など&lt;br /&gt;
* カーソル位置or選択範囲を指定の文字列で挟む&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var prefix = &amp;quot;(&amp;quot;;	//前に付ける文字列&lt;br /&gt;
var suffix = &amp;quot;)&amp;quot;;	//後に付ける文字列&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  Text = prefix + Text + suffix;&lt;br /&gt;
  SetActivePos(GetActivePos() - suffix.length);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲 なし&#039;&#039;&#039; のときと &#039;&#039;&#039;あり&#039;&#039;&#039; のときとで変えたいばあいは、マクロ「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (ポップアップメニューなし)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 逆インデント (単一行対応) ==&lt;br /&gt;
* 推奨割当「Shift + Tab」&lt;br /&gt;
* 複数行選択でない場合でも逆インデントする（※通常はタブ挿入）&lt;br /&gt;
* 複数行選択でない場合は、カーソルの位置関係を維持します&lt;br /&gt;
→ マクロ「[[非選択状態でも逆インデント]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.Text.indexOf(&amp;quot;\n&amp;quot;) &amp;lt; 0) {&lt;br /&gt;
  var x = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
  sel.SelectLine();&lt;br /&gt;
  var n = sel.Text.length;&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 位置関係を維持しない（行選択する）場合は下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!/\n/.test(Document.Selection.Text)) Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.UnIndent();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付と時刻 (メモ帳仕様) ==&lt;br /&gt;
* 推奨割当「F5」&lt;br /&gt;
* メモ帳のように「時刻 日付」の順で現在日時を挿入（※通常は「日付 時刻」の順）&lt;br /&gt;
→ マクロ「[[日付と時刻を挿入]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.InsertDate(meDateTimeDate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上書き保存 (UAC対応) ==&lt;br /&gt;
* 推奨割当「Ctrl + S」&lt;br /&gt;
* UAC が必要な場合は権限昇格して保存&lt;br /&gt;
→ マクロ「[[上書き保存(UAC対応)]]」&lt;br /&gt;
&lt;br /&gt;
== 元に戻す ==&lt;br /&gt;
* 推奨割当「Ctrl + Z」&lt;br /&gt;
* 「元に戻す」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== やり直し ==&lt;br /&gt;
* 推奨割当「Ctrl + Y」&lt;br /&gt;
* 「やり直し」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== 上移動 (先頭行では行頭へ) ==&lt;br /&gt;
* 推奨割当「Up (↑)」&lt;br /&gt;
* 上の行がそれ以上存在しない場合は、行頭（文書の先頭）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;gt; 1) {&lt;br /&gt;
  sel.LineUp();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.StartOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 下移動 (最終行では行末へ) ==&lt;br /&gt;
* 推奨割当「Down (↓)」&lt;br /&gt;
* 下の行がそれ以上存在しない場合は、行末（文書の末尾）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;lt; Document.GetLines(meGetLineView)) {&lt;br /&gt;
  sel.LineDown();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.EndOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 対応する括弧に移動 ==&lt;br /&gt;
* 割当例「Ctrl + [ 」「Ctrl + ] 」など&lt;br /&gt;
* カーソル右側に括弧がある場合、対応する括弧に移動する&lt;br /&gt;
→ マクロ「[[対応する括弧に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 行頭に移動 (インデント対応) ==&lt;br /&gt;
* 推奨割当「Home」「Shift + Home」&lt;br /&gt;
* インデント位置＜カーソル位置の場合は、インデント位置に移動する&lt;br /&gt;
* カーソル位置≦インデント位置の場合は、行頭に移動する&lt;br /&gt;
→ マクロ「[[行頭に移動]]」、「[[行頭か行末 または 選択範囲の始点か終点]]」&lt;br /&gt;
&lt;br /&gt;
トグルなしでただ移動したい場合は下記のコードで　　選択したい時は最後のs.StartOfLineを&#039;&#039;&#039;true&#039;&#039;&#039;に書き換えてください&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var d = document, s = document.selection;&lt;br /&gt;
&lt;br /&gt;
Redraw = false;&lt;br /&gt;
var x = s.GetActivePointX( mePosLogical ), y = s.GetActivePointY( mePosLogical ), pos = s.GetActivePos()&lt;br /&gt;
var top = pos + 1 - x;      // 行頭位置&lt;br /&gt;
var st = d.GetLine( y, 0 );&lt;br /&gt;
var sId = st.search( /[^　 \s]/ );      // 行頭の空白文字数&lt;br /&gt;
var ind = top + sId;                    // インデントの後ろ位置&lt;br /&gt;
&lt;br /&gt;
if ( ind &amp;lt; pos ) {&lt;br /&gt;
    s.SetActivePos( ind );&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    s.StartOfLine( false, mePosLogical );&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 文書の1/4上に／下に移動 ==&lt;br /&gt;
* 割当例「Ctrl + PageUp」など&lt;br /&gt;
* 総表示行数の1/4分、上に移動する（4回の移動で文書頭の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineUp(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Ctrl + PageDown」など&lt;br /&gt;
* 総表示行数の1/4分、下に移動する（4回の移動で文書末の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineDown(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲の始点終点を交替 ==&lt;br /&gt;
* 選択範囲の始点と終点（カーソル位置）を入れ替える&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  var acp = GetActivePos();&lt;br /&gt;
  SetActivePos(GetAnchorPos());&lt;br /&gt;
  SetAnchorPos(acp);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== この文字列を検索 ==&lt;br /&gt;
* 「次／前の文字列を検索」時に移動しない（※通常は次／前に移動する）&lt;br /&gt;
* 範囲選択時は選択文字列で、非選択時は単語選択してから検索を実行します&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  if (IsEmpty) SelectWord();&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY, acp = GetActivePos(), anp = GetAnchorPos();&lt;br /&gt;
  Find(Text, meFindReplaceCase + meFindNext + meFindAround);&lt;br /&gt;
  SetActivePos(acp); SetAnchorPos(anp); ScrollX = sx; ScrollY = sy;&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 標準の移動／選択操作 =&lt;br /&gt;
カーソル移動などは通常、キー割り当てを変更することはできませんが、機能を再現したマクロにキー割り当てすることで実現できます。&lt;br /&gt;
* 範囲選択版は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上／下／左／右 ==&lt;br /&gt;
;上移動 / 下移動&lt;br /&gt;
* 標準の割当「Up (↑)」／選択版の割当「Shift + Up (↑)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Down (↓)」／選択版の割当「Shift + Down (↓)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左移動 / 右移動&lt;br /&gt;
* 標準の割当「Left (←)」／選択版の割当「Shift + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Right (→)」／選択版の割当「Shift + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上頁／下頁／左単語／右単語 ==&lt;br /&gt;
;1ページ上に移動 / 1ページ下に移動&lt;br /&gt;
* 標準の割当「PageUp」／選択版の割当「Shift + PageUp」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「PageDown」／選択版の割当「Shift + PageDown」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左の単語に移動 / 右の単語に移動&lt;br /&gt;
* 標準の割当「Ctrl + Left (←)」／選択版の割当「Shift + Ctrl + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + Right (→)」／選択版の割当「Shift + Ctrl + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 行頭／行末／文書頭／文書末 ==&lt;br /&gt;
;行頭に移動 / 行末に移動 (表示行)&lt;br /&gt;
* 論理行の行頭／行末に移動したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 標準の割当「Home」／選択版の割当「Shift + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「End」／選択版の割当「Shift + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;文書の先頭に移動 / 文書の末尾に移動&lt;br /&gt;
* 標準の割当「Ctrl + Home」／選択版の割当「Shift + Ctrl + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + End」／選択版の割当「Shift + Ctrl + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 単語を選択 ==&lt;br /&gt;
* マウス操作「文字をダブルクリック」&lt;br /&gt;
* カーソル位置にある単語（連続する英数字・かな・カナ・漢字）を選択する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectWord();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を選択 (論理行／表示行) ==&lt;br /&gt;
* マウス操作「文字をトリプルクリック」&lt;br /&gt;
* カーソル行（論理行）を選択する（カーソルは次行行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* マウス操作「行番号をクリック」&lt;br /&gt;
* カーソル行（表示行）を選択する（カーソルは行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  EndOfLine(false, mePosView);&lt;br /&gt;
  if (Document.Text.charAt(GetActivePos())===&amp;quot;\n&amp;quot;)&lt;br /&gt;
    SetAnchorPos(GetActivePos()+1); //行末が改行の場合、改行も含める&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 行末の改行を含めないなら、マクロ「[[マテリアルデザインっぽいアイコンと『小マクロ集』#論理行を選択する (改行を含まない) ※複数行可|論理行を選択する (改行を含まない)]]」／「[[マテリアルデザインっぽいアイコンと『小マクロ集』#表示行を選択する (改行を含まない)|表示行を選択する (改行を含まない)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ご意見・ご要望 =&lt;br /&gt;
何かありましたら，右の [編集] から追記してください．対応するかもしれません．&lt;br /&gt;
&lt;br /&gt;
* 行を上下に移動・複製&lt;br /&gt;
&lt;br /&gt;
AtomやVisual Studio Codeにある、「Alt＋↑／↓」で行を上下に移動、また「Alt＋Shift＋↑／↓」で上下に複製というのはできるでしょうか？自分で書いてみたところ論理行ではなく表示行のみが移動してしまいうまくいきませんでした。&lt;br /&gt;
&lt;br /&gt;
なおAlt＋矢印キーがMeryでは効かないことは存じておりますので、キーバインドは何か別のもの（Alt+U、Dとか）にする必要があると思います。&lt;br /&gt;
----&lt;br /&gt;
* [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]]へのリンクと、マクロ「[[#定型文をファイルから挿入]]」「[[#コピーして選択範囲を解除]]」「[[#選択範囲を解除 (非スクロール)]]」を追加しました。&amp;lt;br&amp;gt;このページに不適切でしたら削除します。(2018/10/08 sukemaru)&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5104</id>
		<title>キーアサイン集</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5104"/>
		<updated>2020-05-21T19:42:39Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* 行頭に移動 (インデント対応) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;キーアサイン(キーボードの割り当て)集です．&amp;lt;br&amp;gt;&lt;br /&gt;
「従来動作＋α」または「別エディタの動作を模倣」を基本とします．&amp;lt;br&amp;gt;&lt;br /&gt;
他に良いと思われるキーアサインがあれば是非ご投稿ください．&lt;br /&gt;
* デフォルトのメニュー内コマンドのキーアサインは、[[ヘルプ:目次|ヘルプ]]の 「[[ヘルプ:目次#キーボードマップ|キーボードマップ]]」 を参照&lt;br /&gt;
* マクロをアイコン化してツールバーに配置するばあいは、「[[マテリアルデザインっぽいアイコンと『小マクロ集』]]」 を参照 &amp;lt;!-- ２行追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 注意点 =&lt;br /&gt;
* 「Alt + 矢印キー」は、開発環境の仕様制限により、キーを割り当てても動作しません（参考フォーラム→ [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2399 2013/12/23] [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=1078 2010/01/20]）。&lt;br /&gt;
&lt;br /&gt;
= キーアサイン =&lt;br /&gt;
== バックスペース ==&lt;br /&gt;
* 推奨割当「Ctrl + BackSpace」&lt;br /&gt;
* バックスペース処理をする（※通常は制御文字 DEL (0x007F) が挿入される）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Editor.ActiveDocument.Selection;&lt;br /&gt;
if (sel.IsEmpty) {&lt;br /&gt;
  sel.DeleteLeft(1);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 強制改行 (インデント無効) ==&lt;br /&gt;
* 推奨割当「Shift + Enter」「Ctrl + Enter」&lt;br /&gt;
* 自動インデントを無視して改行する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Write(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 切り取り (行切り取り無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + X」「Shift + Delete」&lt;br /&gt;
* 非選択時にカーソル行（論理行）を切り取りしない（※通常は行切り取りする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Cut();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時にカーソル行（論理行）をコピーしない（※通常は行コピーする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー時選択) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時コピー（行コピー）時にコピーした範囲を選択する（※通常は範囲選択しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピーして選択範囲を解除 ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 選択範囲ありでコピーしたときは選択範囲を解除する（※通常は選択解除しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.selection.Copy();&lt;br /&gt;
document.selection.Collapse( meCollapseStart );	// 選択範囲の開始位置にカーソルを移動&lt;br /&gt;
// 選択範囲の始点にカーソルを移動させて解除するなら ( meCollapseStart )&lt;br /&gt;
// 選択範囲の終点にカーソルを移動させて解除するなら ( meCollapseEnd )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== すべて選択 (非スクロール) ==&lt;br /&gt;
* 推奨割当「Ctrl + A」&lt;br /&gt;
* すべて選択時にスクロールしない（※通常は文書の末尾までスクロールする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶&lt;br /&gt;
Document.Selection.SelectAll();&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲を解除 (非スクロール) ==&lt;br /&gt;
* 推奨割り当て「Shift + Esc」または「Esc」 &amp;lt;br&amp;gt; ※「Ctrl + Esc」/「Ctrl + Shift + Esc」は Windows の予約済みショートカットキー（スタートメニュー / タスクマネージャ） &amp;lt;br&amp;gt; ※ 通常、選択範囲の解除は「矢印キー」でもできるが、その場合カーソル位置まで画面がスクロールする&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.Collapse( meCollapseEnd );	// 選択範囲の先頭にカーソルを残して解除するなら ( meCollapseStart )&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
選択範囲の先頭/末尾によらず、アクティブなキャレット位置のまま解除するなら…&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.SetActivePos( document.selection.GetActivePos() );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
・2018/10/08追加 (sukemaru)&lt;br /&gt;
・2018/10/16加筆 (sukemaru)&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加切り取り ==&lt;br /&gt;
* 割当例「Shift + Ctrl + X」など&lt;br /&gt;
* クリップボードに追加する切り取り&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Cut();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加コピー ==&lt;br /&gt;
* 割当例「Shift + Ctrl + C」など&lt;br /&gt;
* クリップボードに追加するコピー&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を複製 ==&lt;br /&gt;
* 割当例「Ctrl + D」「Ctrl + Insert」など&lt;br /&gt;
* カーソル行（論理行）を複製する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.DuplicateLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 複数行を複製するばあいは、マクロ「[[行を複製 (複数行可)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を上下に複製 ==&lt;br /&gt;
* 割当例「Shift + Alt + U」「Shift + Alt + [」／「Shift + Alt + D」「Shift + Alt + ]」など（AtomやVSCodeの動作を意識しています）&lt;br /&gt;
→マクロ「[[行を複製 (複数行可)]]」&lt;br /&gt;
&lt;br /&gt;
== 行を上下に移動 ==&lt;br /&gt;
* 割当例「Alt + U」「Alt + [」／「Alt + D」「Alt + ]」など&lt;br /&gt;
→マクロ「[[行を上下に移動（Mery 2.7 用）]]」&lt;br /&gt;
&lt;br /&gt;
== 行を削除 ==&lt;br /&gt;
* 割当例「Ctrl + E」「Ctrl + Delete」など&lt;br /&gt;
* カーソル行（論理行）を削除する&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から同様の機能を持つ「行削除」が追加されました&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.Delete();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行頭／行末まで削除 ==&lt;br /&gt;
* 論理行の行頭／行末まで削除したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から追加された「行左削除」「行右削除」で、論理行の行頭／行末までの削除ができます&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 割当例「Shift + BackSpace」など&lt;br /&gt;
* カーソル位置から行頭（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Shift + Delete」など&lt;br /&gt;
* カーソル位置から行末（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  EndOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 定型文をファイルから挿入 ==&lt;br /&gt;
* 割り当て例「Ctrl + I」「Ctrl + @」など&lt;br /&gt;
* 文書の雛形用の定型文や署名（連絡先、コピーライト）などのテンプレートを、別途用意したテキストファイルから取り込む&lt;br /&gt;
* あらかじめ定型文用のテキストファイルを用意しておくこと&lt;br /&gt;
→ ref. [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]] の「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文（署名）を追加|定型文（署名）を追加]]」 （※「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文つき新規ドキュメント|定型文つき新規ドキュメント]]」を新規タブで開くソースコードもあります）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;定型文を追加&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;定型文をファイルから挿入&amp;quot;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
挿入したテンプレート部分の先頭にカーソルを移動させるなら以下のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
var pos = document.selection.GetActivePos();&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
document.selection.SetActivePos( pos );		// キャレットをマクロ開始前の座標に戻す&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 括弧で挟む ==&lt;br /&gt;
* 割当例「Ctrl + 8」「Ctrl + [ 」など&lt;br /&gt;
* カーソル位置or選択範囲を指定の文字列で挟む&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var prefix = &amp;quot;(&amp;quot;;	//前に付ける文字列&lt;br /&gt;
var suffix = &amp;quot;)&amp;quot;;	//後に付ける文字列&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  Text = prefix + Text + suffix;&lt;br /&gt;
  SetActivePos(GetActivePos() - suffix.length);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲 なし&#039;&#039;&#039; のときと &#039;&#039;&#039;あり&#039;&#039;&#039; のときとで変えたいばあいは、マクロ「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (ポップアップメニューなし)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 逆インデント (単一行対応) ==&lt;br /&gt;
* 推奨割当「Shift + Tab」&lt;br /&gt;
* 複数行選択でない場合でも逆インデントする（※通常はタブ挿入）&lt;br /&gt;
* 複数行選択でない場合は、カーソルの位置関係を維持します&lt;br /&gt;
→ マクロ「[[非選択状態でも逆インデント]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.Text.indexOf(&amp;quot;\n&amp;quot;) &amp;lt; 0) {&lt;br /&gt;
  var x = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
  sel.SelectLine();&lt;br /&gt;
  var n = sel.Text.length;&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 位置関係を維持しない（行選択する）場合は下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!/\n/.test(Document.Selection.Text)) Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.UnIndent();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付と時刻 (メモ帳仕様) ==&lt;br /&gt;
* 推奨割当「F5」&lt;br /&gt;
* メモ帳のように「時刻 日付」の順で現在日時を挿入（※通常は「日付 時刻」の順）&lt;br /&gt;
→ マクロ「[[日付と時刻を挿入]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.InsertDate(meDateTimeDate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上書き保存 (UAC対応) ==&lt;br /&gt;
* 推奨割当「Ctrl + S」&lt;br /&gt;
* UAC が必要な場合は権限昇格して保存&lt;br /&gt;
→ マクロ「[[上書き保存(UAC対応)]]」&lt;br /&gt;
&lt;br /&gt;
== 元に戻す ==&lt;br /&gt;
* 推奨割当「Ctrl + Z」&lt;br /&gt;
* 「元に戻す」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== やり直し ==&lt;br /&gt;
* 推奨割当「Ctrl + Y」&lt;br /&gt;
* 「やり直し」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== 上移動 (先頭行では行頭へ) ==&lt;br /&gt;
* 推奨割当「Up (↑)」&lt;br /&gt;
* 上の行がそれ以上存在しない場合は、行頭（文書の先頭）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;gt; 1) {&lt;br /&gt;
  sel.LineUp();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.StartOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 下移動 (最終行では行末へ) ==&lt;br /&gt;
* 推奨割当「Down (↓)」&lt;br /&gt;
* 下の行がそれ以上存在しない場合は、行末（文書の末尾）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;lt; Document.GetLines(meGetLineView)) {&lt;br /&gt;
  sel.LineDown();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.EndOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 対応する括弧に移動 ==&lt;br /&gt;
* 割当例「Ctrl + [ 」「Ctrl + ] 」など&lt;br /&gt;
* カーソル右側に括弧がある場合、対応する括弧に移動する&lt;br /&gt;
→ マクロ「[[対応する括弧に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 行頭に移動 (インデント対応) ==&lt;br /&gt;
* 推奨割当「Home」「Shift + Home」&lt;br /&gt;
* インデント位置＜カーソル位置の場合は、インデント位置に移動する&lt;br /&gt;
* カーソル位置≦インデント位置の場合は、行頭に移動する&lt;br /&gt;
→ マクロ「[[行頭に移動]]」、「[[行頭か行末 または 選択範囲の始点か終点]]」&lt;br /&gt;
&lt;br /&gt;
トグルなしでただ移動したい場合は下記のコードで 選択したい時は最後のs.StartOfLineを&#039;&#039;&#039;true&#039;&#039;&#039;に書き換えてください&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行頭に移動&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var d = document, s = document.selection;&lt;br /&gt;
&lt;br /&gt;
Redraw = false;&lt;br /&gt;
var x = s.GetActivePointX( mePosLogical ), y = s.GetActivePointY( mePosLogical ), pos = s.GetActivePos(); // 現在位置&lt;br /&gt;
var top = pos + 1 - x;      // 行頭位置&lt;br /&gt;
var st = d.GetLine( y, 0 );&lt;br /&gt;
var sId = st.search( /[^　 \s]/ );      // 行頭の空白文字数&lt;br /&gt;
var ind = top + sId;                    // インデントの後ろ位置&lt;br /&gt;
&lt;br /&gt;
if ( ind &amp;lt; pos ) {&lt;br /&gt;
    // インデントの後ろに移動&lt;br /&gt;
    s.SetActivePos( ind );&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    // 行頭に移動&lt;br /&gt;
    s.StartOfLine( false, mePosLogical );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 文書の1/4上に／下に移動 ==&lt;br /&gt;
* 割当例「Ctrl + PageUp」など&lt;br /&gt;
* 総表示行数の1/4分、上に移動する（4回の移動で文書頭の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineUp(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Ctrl + PageDown」など&lt;br /&gt;
* 総表示行数の1/4分、下に移動する（4回の移動で文書末の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineDown(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲の始点終点を交替 ==&lt;br /&gt;
* 選択範囲の始点と終点（カーソル位置）を入れ替える&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  var acp = GetActivePos();&lt;br /&gt;
  SetActivePos(GetAnchorPos());&lt;br /&gt;
  SetAnchorPos(acp);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== この文字列を検索 ==&lt;br /&gt;
* 「次／前の文字列を検索」時に移動しない（※通常は次／前に移動する）&lt;br /&gt;
* 範囲選択時は選択文字列で、非選択時は単語選択してから検索を実行します&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  if (IsEmpty) SelectWord();&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY, acp = GetActivePos(), anp = GetAnchorPos();&lt;br /&gt;
  Find(Text, meFindReplaceCase + meFindNext + meFindAround);&lt;br /&gt;
  SetActivePos(acp); SetAnchorPos(anp); ScrollX = sx; ScrollY = sy;&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 標準の移動／選択操作 =&lt;br /&gt;
カーソル移動などは通常、キー割り当てを変更することはできませんが、機能を再現したマクロにキー割り当てすることで実現できます。&lt;br /&gt;
* 範囲選択版は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上／下／左／右 ==&lt;br /&gt;
;上移動 / 下移動&lt;br /&gt;
* 標準の割当「Up (↑)」／選択版の割当「Shift + Up (↑)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Down (↓)」／選択版の割当「Shift + Down (↓)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左移動 / 右移動&lt;br /&gt;
* 標準の割当「Left (←)」／選択版の割当「Shift + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Right (→)」／選択版の割当「Shift + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上頁／下頁／左単語／右単語 ==&lt;br /&gt;
;1ページ上に移動 / 1ページ下に移動&lt;br /&gt;
* 標準の割当「PageUp」／選択版の割当「Shift + PageUp」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「PageDown」／選択版の割当「Shift + PageDown」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左の単語に移動 / 右の単語に移動&lt;br /&gt;
* 標準の割当「Ctrl + Left (←)」／選択版の割当「Shift + Ctrl + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + Right (→)」／選択版の割当「Shift + Ctrl + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 行頭／行末／文書頭／文書末 ==&lt;br /&gt;
;行頭に移動 / 行末に移動 (表示行)&lt;br /&gt;
* 論理行の行頭／行末に移動したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 標準の割当「Home」／選択版の割当「Shift + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「End」／選択版の割当「Shift + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;文書の先頭に移動 / 文書の末尾に移動&lt;br /&gt;
* 標準の割当「Ctrl + Home」／選択版の割当「Shift + Ctrl + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + End」／選択版の割当「Shift + Ctrl + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 単語を選択 ==&lt;br /&gt;
* マウス操作「文字をダブルクリック」&lt;br /&gt;
* カーソル位置にある単語（連続する英数字・かな・カナ・漢字）を選択する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectWord();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を選択 (論理行／表示行) ==&lt;br /&gt;
* マウス操作「文字をトリプルクリック」&lt;br /&gt;
* カーソル行（論理行）を選択する（カーソルは次行行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* マウス操作「行番号をクリック」&lt;br /&gt;
* カーソル行（表示行）を選択する（カーソルは行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  EndOfLine(false, mePosView);&lt;br /&gt;
  if (Document.Text.charAt(GetActivePos())===&amp;quot;\n&amp;quot;)&lt;br /&gt;
    SetAnchorPos(GetActivePos()+1); //行末が改行の場合、改行も含める&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 行末の改行を含めないなら、マクロ「[[マテリアルデザインっぽいアイコンと『小マクロ集』#論理行を選択する (改行を含まない) ※複数行可|論理行を選択する (改行を含まない)]]」／「[[マテリアルデザインっぽいアイコンと『小マクロ集』#表示行を選択する (改行を含まない)|表示行を選択する (改行を含まない)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ご意見・ご要望 =&lt;br /&gt;
何かありましたら，右の [編集] から追記してください．対応するかもしれません．&lt;br /&gt;
&lt;br /&gt;
* 行を上下に移動・複製&lt;br /&gt;
&lt;br /&gt;
AtomやVisual Studio Codeにある、「Alt＋↑／↓」で行を上下に移動、また「Alt＋Shift＋↑／↓」で上下に複製というのはできるでしょうか？自分で書いてみたところ論理行ではなく表示行のみが移動してしまいうまくいきませんでした。&lt;br /&gt;
&lt;br /&gt;
なおAlt＋矢印キーがMeryでは効かないことは存じておりますので、キーバインドは何か別のもの（Alt+U、Dとか）にする必要があると思います。&lt;br /&gt;
----&lt;br /&gt;
* [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]]へのリンクと、マクロ「[[#定型文をファイルから挿入]]」「[[#コピーして選択範囲を解除]]」「[[#選択範囲を解除 (非スクロール)]]」を追加しました。&amp;lt;br&amp;gt;このページに不適切でしたら削除します。(2018/10/08 sukemaru)&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5103</id>
		<title>キーアサイン集</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=5103"/>
		<updated>2020-05-21T19:28:23Z</updated>

		<summary type="html">&lt;p&gt;Isari: 行を上下に複製・移動することについてキーアサイン追加（中身は既存マクロへのリンク）&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;キーアサイン(キーボードの割り当て)集です．&amp;lt;br&amp;gt;&lt;br /&gt;
「従来動作＋α」または「別エディタの動作を模倣」を基本とします．&amp;lt;br&amp;gt;&lt;br /&gt;
他に良いと思われるキーアサインがあれば是非ご投稿ください．&lt;br /&gt;
* デフォルトのメニュー内コマンドのキーアサインは、[[ヘルプ:目次|ヘルプ]]の 「[[ヘルプ:目次#キーボードマップ|キーボードマップ]]」 を参照&lt;br /&gt;
* マクロをアイコン化してツールバーに配置するばあいは、「[[マテリアルデザインっぽいアイコンと『小マクロ集』]]」 を参照 &amp;lt;!-- ２行追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 注意点 =&lt;br /&gt;
* 「Alt + 矢印キー」は、開発環境の仕様制限により、キーを割り当てても動作しません（参考フォーラム→ [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2399 2013/12/23] [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=1078 2010/01/20]）。&lt;br /&gt;
&lt;br /&gt;
= キーアサイン =&lt;br /&gt;
== バックスペース ==&lt;br /&gt;
* 推奨割当「Ctrl + BackSpace」&lt;br /&gt;
* バックスペース処理をする（※通常は制御文字 DEL (0x007F) が挿入される）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Editor.ActiveDocument.Selection;&lt;br /&gt;
if (sel.IsEmpty) {&lt;br /&gt;
  sel.DeleteLeft(1);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 強制改行 (インデント無効) ==&lt;br /&gt;
* 推奨割当「Shift + Enter」「Ctrl + Enter」&lt;br /&gt;
* 自動インデントを無視して改行する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Write(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 切り取り (行切り取り無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + X」「Shift + Delete」&lt;br /&gt;
* 非選択時にカーソル行（論理行）を切り取りしない（※通常は行切り取りする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Cut();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時にカーソル行（論理行）をコピーしない（※通常は行コピーする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー時選択) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時コピー（行コピー）時にコピーした範囲を選択する（※通常は範囲選択しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピーして選択範囲を解除 ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 選択範囲ありでコピーしたときは選択範囲を解除する（※通常は選択解除しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.selection.Copy();&lt;br /&gt;
document.selection.Collapse( meCollapseStart );	// 選択範囲の開始位置にカーソルを移動&lt;br /&gt;
// 選択範囲の始点にカーソルを移動させて解除するなら ( meCollapseStart )&lt;br /&gt;
// 選択範囲の終点にカーソルを移動させて解除するなら ( meCollapseEnd )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== すべて選択 (非スクロール) ==&lt;br /&gt;
* 推奨割当「Ctrl + A」&lt;br /&gt;
* すべて選択時にスクロールしない（※通常は文書の末尾までスクロールする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶&lt;br /&gt;
Document.Selection.SelectAll();&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲を解除 (非スクロール) ==&lt;br /&gt;
* 推奨割り当て「Shift + Esc」または「Esc」 &amp;lt;br&amp;gt; ※「Ctrl + Esc」/「Ctrl + Shift + Esc」は Windows の予約済みショートカットキー（スタートメニュー / タスクマネージャ） &amp;lt;br&amp;gt; ※ 通常、選択範囲の解除は「矢印キー」でもできるが、その場合カーソル位置まで画面がスクロールする&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.Collapse( meCollapseEnd );	// 選択範囲の先頭にカーソルを残して解除するなら ( meCollapseStart )&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
選択範囲の先頭/末尾によらず、アクティブなキャレット位置のまま解除するなら…&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
document.selection.SetActivePos( document.selection.GetActivePos() );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
・2018/10/08追加 (sukemaru)&lt;br /&gt;
・2018/10/16加筆 (sukemaru)&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加切り取り ==&lt;br /&gt;
* 割当例「Shift + Ctrl + X」など&lt;br /&gt;
* クリップボードに追加する切り取り&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Cut();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加コピー ==&lt;br /&gt;
* 割当例「Shift + Ctrl + C」など&lt;br /&gt;
* クリップボードに追加するコピー&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を複製 ==&lt;br /&gt;
* 割当例「Ctrl + D」「Ctrl + Insert」など&lt;br /&gt;
* カーソル行（論理行）を複製する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.DuplicateLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 複数行を複製するばあいは、マクロ「[[行を複製 (複数行可)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を上下に複製 ==&lt;br /&gt;
* 割当例「Shift + Alt + U」「Shift + Alt + [」／「Shift + Alt + D」「Shift + Alt + ]」など（AtomやVSCodeの動作を意識しています）&lt;br /&gt;
→マクロ「[[行を複製 (複数行可)]]」&lt;br /&gt;
&lt;br /&gt;
== 行を上下に移動 ==&lt;br /&gt;
* 割当例「Alt + U」「Alt + [」／「Alt + D」「Alt + ]」など&lt;br /&gt;
→マクロ「[[行を上下に移動（Mery 2.7 用）]]」&lt;br /&gt;
&lt;br /&gt;
== 行を削除 ==&lt;br /&gt;
* 割当例「Ctrl + E」「Ctrl + Delete」など&lt;br /&gt;
* カーソル行（論理行）を削除する&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から同様の機能を持つ「行削除」が追加されました&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.Delete();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行頭／行末まで削除 ==&lt;br /&gt;
* 論理行の行頭／行末まで削除したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* &amp;lt;b&amp;gt;Mery 2.5.0 から追加された「行左削除」「行右削除」で、論理行の行頭／行末までの削除ができます&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 割当例「Shift + BackSpace」など&lt;br /&gt;
* カーソル位置から行頭（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Shift + Delete」など&lt;br /&gt;
* カーソル位置から行末（表示行）まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  EndOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 定型文をファイルから挿入 ==&lt;br /&gt;
* 割り当て例「Ctrl + I」「Ctrl + @」など&lt;br /&gt;
* 文書の雛形用の定型文や署名（連絡先、コピーライト）などのテンプレートを、別途用意したテキストファイルから取り込む&lt;br /&gt;
* あらかじめ定型文用のテキストファイルを用意しておくこと&lt;br /&gt;
→ ref. [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]] の「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文（署名）を追加|定型文（署名）を追加]]」 （※「[[マテリアルデザインっぽいアイコンと『小マクロ集』#定型文つき新規ドキュメント|定型文つき新規ドキュメント]]」を新規タブで開くソースコードもあります）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;定型文を追加&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;定型文をファイルから挿入&amp;quot;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
挿入したテンプレート部分の先頭にカーソルを移動させるなら以下のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var file = &amp;quot;C:\\hoge\\Template.txt&amp;quot;;		// 挿入するテキストファイルを &amp;quot;フルパス&amp;quot; で指定（ \ は２つ重ね \\ にすること）&lt;br /&gt;
var pos = document.selection.GetActivePos();&lt;br /&gt;
document.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」&lt;br /&gt;
document.selection.SetActivePos( pos );		// キャレットをマクロ開始前の座標に戻す&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- 2018/10/08追加 (sukemaru) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 括弧で挟む ==&lt;br /&gt;
* 割当例「Ctrl + 8」「Ctrl + [ 」など&lt;br /&gt;
* カーソル位置or選択範囲を指定の文字列で挟む&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var prefix = &amp;quot;(&amp;quot;;	//前に付ける文字列&lt;br /&gt;
var suffix = &amp;quot;)&amp;quot;;	//後に付ける文字列&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  Text = prefix + Text + suffix;&lt;br /&gt;
  SetActivePos(GetActivePos() - suffix.length);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ マクロ実行後のカーソル位置を&#039;&#039;&#039;選択範囲 なし&#039;&#039;&#039; のときと &#039;&#039;&#039;あり&#039;&#039;&#039; のときとで変えたいばあいは、マクロ「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (ポップアップメニューなし)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 逆インデント (単一行対応) ==&lt;br /&gt;
* 推奨割当「Shift + Tab」&lt;br /&gt;
* 複数行選択でない場合でも逆インデントする（※通常はタブ挿入）&lt;br /&gt;
* 複数行選択でない場合は、カーソルの位置関係を維持します&lt;br /&gt;
→ マクロ「[[非選択状態でも逆インデント]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.Text.indexOf(&amp;quot;\n&amp;quot;) &amp;lt; 0) {&lt;br /&gt;
  var x = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
  sel.SelectLine();&lt;br /&gt;
  var n = sel.Text.length;&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 位置関係を維持しない（行選択する）場合は下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!/\n/.test(Document.Selection.Text)) Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.UnIndent();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付と時刻 (メモ帳仕様) ==&lt;br /&gt;
* 推奨割当「F5」&lt;br /&gt;
* メモ帳のように「時刻 日付」の順で現在日時を挿入（※通常は「日付 時刻」の順）&lt;br /&gt;
→ マクロ「[[日付と時刻を挿入]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.InsertDate(meDateTimeDate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上書き保存 (UAC対応) ==&lt;br /&gt;
* 推奨割当「Ctrl + S」&lt;br /&gt;
* UAC が必要な場合は権限昇格して保存&lt;br /&gt;
→ マクロ「[[上書き保存(UAC対応)]]」&lt;br /&gt;
&lt;br /&gt;
== 元に戻す ==&lt;br /&gt;
* 推奨割当「Ctrl + Z」&lt;br /&gt;
* 「元に戻す」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== やり直し ==&lt;br /&gt;
* 推奨割当「Ctrl + Y」&lt;br /&gt;
* 「やり直し」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== 上移動 (先頭行では行頭へ) ==&lt;br /&gt;
* 推奨割当「Up (↑)」&lt;br /&gt;
* 上の行がそれ以上存在しない場合は、行頭（文書の先頭）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;gt; 1) {&lt;br /&gt;
  sel.LineUp();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.StartOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 下移動 (最終行では行末へ) ==&lt;br /&gt;
* 推奨割当「Down (↓)」&lt;br /&gt;
* 下の行がそれ以上存在しない場合は、行末（文書の末尾）に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;lt; Document.GetLines(meGetLineView)) {&lt;br /&gt;
  sel.LineDown();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.EndOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 対応する括弧に移動 ==&lt;br /&gt;
* 割当例「Ctrl + [ 」「Ctrl + ] 」など&lt;br /&gt;
* カーソル右側に括弧がある場合、対応する括弧に移動する&lt;br /&gt;
→ マクロ「[[対応する括弧に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 行頭に移動 (インデント対応) ==&lt;br /&gt;
* 推奨割当「Home」「Shift + Home」&lt;br /&gt;
* インデント位置＜カーソル位置の場合は、インデント位置に移動する&lt;br /&gt;
* カーソル位置≦インデント位置の場合は、行頭に移動する&lt;br /&gt;
→ マクロ「[[行頭に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 文書の1/4上に／下に移動 ==&lt;br /&gt;
* 割当例「Ctrl + PageUp」など&lt;br /&gt;
* 総表示行数の1/4分、上に移動する（4回の移動で文書頭の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineUp(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Ctrl + PageDown」など&lt;br /&gt;
* 総表示行数の1/4分、下に移動する（4回の移動で文書末の行に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineDown(false, Math.ceil(Document.GetLines(meGetLineView)/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲の始点終点を交替 ==&lt;br /&gt;
* 選択範囲の始点と終点（カーソル位置）を入れ替える&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  var acp = GetActivePos();&lt;br /&gt;
  SetActivePos(GetAnchorPos());&lt;br /&gt;
  SetAnchorPos(acp);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== この文字列を検索 ==&lt;br /&gt;
* 「次／前の文字列を検索」時に移動しない（※通常は次／前に移動する）&lt;br /&gt;
* 範囲選択時は選択文字列で、非選択時は単語選択してから検索を実行します&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  if (IsEmpty) SelectWord();&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY, acp = GetActivePos(), anp = GetAnchorPos();&lt;br /&gt;
  Find(Text, meFindReplaceCase + meFindNext + meFindAround);&lt;br /&gt;
  SetActivePos(acp); SetAnchorPos(anp); ScrollX = sx; ScrollY = sy;&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 標準の移動／選択操作 =&lt;br /&gt;
カーソル移動などは通常、キー割り当てを変更することはできませんが、機能を再現したマクロにキー割り当てすることで実現できます。&lt;br /&gt;
* 範囲選択版は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上／下／左／右 ==&lt;br /&gt;
;上移動 / 下移動&lt;br /&gt;
* 標準の割当「Up (↑)」／選択版の割当「Shift + Up (↑)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Down (↓)」／選択版の割当「Shift + Down (↓)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左移動 / 右移動&lt;br /&gt;
* 標準の割当「Left (←)」／選択版の割当「Shift + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Right (→)」／選択版の割当「Shift + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上頁／下頁／左単語／右単語 ==&lt;br /&gt;
;1ページ上に移動 / 1ページ下に移動&lt;br /&gt;
* 標準の割当「PageUp」／選択版の割当「Shift + PageUp」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「PageDown」／選択版の割当「Shift + PageDown」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左の単語に移動 / 右の単語に移動&lt;br /&gt;
* 標準の割当「Ctrl + Left (←)」／選択版の割当「Shift + Ctrl + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + Right (→)」／選択版の割当「Shift + Ctrl + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 行頭／行末／文書頭／文書末 ==&lt;br /&gt;
;行頭に移動 / 行末に移動 (表示行)&lt;br /&gt;
* 論理行の行頭／行末に移動したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 標準の割当「Home」／選択版の割当「Shift + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「End」／選択版の割当「Shift + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;文書の先頭に移動 / 文書の末尾に移動&lt;br /&gt;
* 標準の割当「Ctrl + Home」／選択版の割当「Shift + Ctrl + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + End」／選択版の割当「Shift + Ctrl + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 単語を選択 ==&lt;br /&gt;
* マウス操作「文字をダブルクリック」&lt;br /&gt;
* カーソル位置にある単語（連続する英数字・かな・カナ・漢字）を選択する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectWord();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を選択 (論理行／表示行) ==&lt;br /&gt;
* マウス操作「文字をトリプルクリック」&lt;br /&gt;
* カーソル行（論理行）を選択する（カーソルは次行行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* マウス操作「行番号をクリック」&lt;br /&gt;
* カーソル行（表示行）を選択する（カーソルは行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  EndOfLine(false, mePosView);&lt;br /&gt;
  if (Document.Text.charAt(GetActivePos())===&amp;quot;\n&amp;quot;)&lt;br /&gt;
    SetAnchorPos(GetActivePos()+1); //行末が改行の場合、改行も含める&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
→ 行末の改行を含めないなら、マクロ「[[マテリアルデザインっぽいアイコンと『小マクロ集』#論理行を選択する (改行を含まない) ※複数行可|論理行を選択する (改行を含まない)]]」／「[[マテリアルデザインっぽいアイコンと『小マクロ集』#表示行を選択する (改行を含まない)|表示行を選択する (改行を含まない)]]」&amp;lt;!-- 一文追加 (sukemaru) 2018/10/08 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ご意見・ご要望 =&lt;br /&gt;
何かありましたら，右の [編集] から追記してください．対応するかもしれません．&lt;br /&gt;
&lt;br /&gt;
* 行を上下に移動・複製&lt;br /&gt;
&lt;br /&gt;
AtomやVisual Studio Codeにある、「Alt＋↑／↓」で行を上下に移動、また「Alt＋Shift＋↑／↓」で上下に複製というのはできるでしょうか？自分で書いてみたところ論理行ではなく表示行のみが移動してしまいうまくいきませんでした。&lt;br /&gt;
&lt;br /&gt;
なおAlt＋矢印キーがMeryでは効かないことは存じておりますので、キーバインドは何か別のもの（Alt+U、Dとか）にする必要があると思います。&lt;br /&gt;
----&lt;br /&gt;
* [[マテリアルデザインっぽいアイコンと『小マクロ集』|『小マクロ集』]]へのリンクと、マクロ「[[#定型文をファイルから挿入]]」「[[#コピーして選択範囲を解除]]」「[[#選択範囲を解除 (非スクロール)]]」を追加しました。&amp;lt;br&amp;gt;このページに不適切でしたら削除します。(2018/10/08 sukemaru)&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E6%A7%8B%E6%96%87%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&amp;diff=5102</id>
		<title>構文ファイル</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E6%A7%8B%E6%96%87%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&amp;diff=5102"/>
		<updated>2020-05-21T18:11:25Z</updated>

		<summary type="html">&lt;p&gt;Isari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できる構文ファイルを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
「表示」メニューの「編集モード &amp;gt; 編集モードの設定 &amp;gt; プロパティ」の下部にある「インポート」ボタンでインポートして使用します。構文ファイルライブラリはどなたでも自由に編集できますので、新しい言語やマニアックな言語の色分けに使えそうなものが出来上がったら投稿してみてくださいね。&lt;br /&gt;
&lt;br /&gt;
*[http://www.haijin-boys.com/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:aozoramsy.zip Aozora] (急急如律令、isari)&lt;br /&gt;
*[https://github.com/jacklegdoc/Mery-AutoHotKey-syntax/blob/master/AutoHotkey.msy AutoHotkey] (jacklegdoc)&lt;br /&gt;
*[[Bat]] (有志)&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/bf.msy Brainf*ck] (MihailJP) &amp;lt;!-- 冗談半分で作ったシロモノです --&amp;gt;&lt;br /&gt;
*[[メディア:CASLII.zip|CASL II]] (YOS G-spec)&lt;br /&gt;
*[[Clojure]] (n)&lt;br /&gt;
*[[メディア:CommonLisp.zip|CommonLisp]] (YOS G-spec)&lt;br /&gt;
*[https://github.com/GunseiPaseri/mery_MSY/blob/master/css3.msy CSS3] (群生系パセリ)&lt;br /&gt;
*[[Delphi]] (kuro)&lt;br /&gt;
*[https://gist.github.com/vain0/95a28a64fb371d37613b diff/word-diff]&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/d.msy D言語] (MihailJP) ※Mery本体の仕様により、コメントネストが正しく表示されません&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/erlang.msy Erlang] (MihailJP)&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/fsharp.msy F#] (MihailJP) ※Mery本体の仕様により、コメントネストが正しく表示されません&lt;br /&gt;
*[[メディア:Fortran.zip|Fortran]] (YOS G-spec)&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/go.msy Go] (MihailJP) ※Mery本体の仕様により、Raw文字列リテラルは色分けされません&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/haskell.msy Haskell] (MihailJP)&lt;br /&gt;
*[[HTML5]] (ucky)&lt;br /&gt;
*[[HTML5.1]] (momdo)&lt;br /&gt;
*[https://github.com/ShikaKingdom/MerySyntaxFile JSON] (ShikaKingdom)&lt;br /&gt;
*[https://github.com/utgw/kuin-syntaxhilight-for-mery/blob/master/kuin.msy Kuin] (うたがわきき)&lt;br /&gt;
*[[Lua]] (n)&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/markdown.msy Markdown] (MihailJP)&lt;br /&gt;
*[[メディア:Matlab.zip|Matlab]] (YOS G-spec)&lt;br /&gt;
* [[Mery MSY]] (sukemaru) 2018/09/05&lt;br /&gt;
* [[Mery Macro JS]] (sukemaru) 最終更新: 2018/11/10 ※マクロの JS ファイル用&lt;br /&gt;
*[[MQL4_改]] (東平) 2020/03/25&lt;br /&gt;
*[[NSIS]] (Leo)&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/ocaml.msy OCaml] (MihailJP) ※Mery本体の仕様により、コメントネストが正しく表示されません&lt;br /&gt;
*[https://github.com/WGGSH/ProcessingMery/blob/master/src/Processing.msy Processing] (WGG)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/msy Re:VIEW] (高見知英)&lt;br /&gt;
*[https://github.com/sh0hei/merydef/blob/master/scala.msy Scala] (sh0hei)&lt;br /&gt;
*[[メディア:ShellScript(bash).zip|ShellScript (bash)]] (yuko)&lt;br /&gt;
*[https://github.com/ebc-2in2crc/merydef/blob/master/yaml.msy YAML] (ebc_2in2crc)&lt;br /&gt;
*[https://github.com/syeimi/Mery-msy/blob/master/Whitespace.msy Whitespace] (syeimi)&lt;br /&gt;
*[https://github.com/MihailJP/merydef/blob/master/nadesiko.msy なでしこ] (MihailJP) ※試供品。注意点は[https://github.com/MihailJP/merydef#%E3%81%AA%E3%81%A7%E3%81%97%E3%81%93-nadesikomsy]を参照のこと&lt;br /&gt;
*[https://github.com/ikebeight/hatenasyntax/blob/master/hatena.msy はてな記法] (池辺祥和) ※Mery本体の仕様により、引用記法などが正しく表示されません&lt;br /&gt;
*[[メディア:MQL4.zip|MQL4]] (才石)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/msy/less.msy Less] (高見知英)&lt;br /&gt;
* [[JaneStyle （正規表現用）]] (sukemaru) 2018/08/31 ※bregonig の正規表現に対応 &lt;br /&gt;
*[https://github.com/moriyaki/pug.msy PUG] (もりゃき)&lt;br /&gt;
&lt;br /&gt;
*[https://www.haijin-boys.com/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:ZScript.zip ZScript] (Starworshipper) ZBrushというCGソフトのマクロ用です。&lt;br /&gt;
== 構文ファイルとは ==&lt;br /&gt;
&lt;br /&gt;
構文ファイルとは、拡張子「.msy」のファイルで、HTMLやC++などの言語における「強調」「構文」などの情報を保持しています。編集モードの設定から、インポートすることによって使用できます。一度インポートすると、Mery内に保存されますので、構文ファイルは不要になります。&lt;br /&gt;
&lt;br /&gt;
保存されているデータはテキストで、基本は強調する単語の列挙、特別な情報を # で始まる行で保存します。有志が作った構文ファイルを実際にテキストエディタで開いて見てみると分かりやすいでしょう。&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:aozoramsy.zip&amp;diff=5101</id>
		<title>ファイル:aozoramsy.zip</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:aozoramsy.zip&amp;diff=5101"/>
		<updated>2020-05-21T18:10:14Z</updated>

		<summary type="html">&lt;p&gt;Isari: Isari が ファイル:aozoramsy.zip の新しいバージョンを アップロードしました&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;青空文庫形式の見出しやルビ、画像などの注記を色つけ。&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=3159</id>
		<title>キーアサイン集</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%AD%E3%83%BC%E3%82%A2%E3%82%B5%E3%82%A4%E3%83%B3%E9%9B%86&amp;diff=3159"/>
		<updated>2018-07-16T21:25:32Z</updated>

		<summary type="html">&lt;p&gt;Isari: /* ご意見・ご要望 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;キーアサイン(キーボードの割り当て)集です．&amp;lt;br&amp;gt;&lt;br /&gt;
「従来動作＋α」または「別エディタの動作を模倣」を基本とします．&amp;lt;br&amp;gt;&lt;br /&gt;
他に良いと思われるキーアサインがあれば是非ご投稿ください．&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 注意点 =&lt;br /&gt;
* 「Alt + 矢印キー」は、開発環境の仕様制限により、キーを割り当てても動作しません。(参考フォーラム→ [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2399 2013/12/23付] [http://www.haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=1078 2010/01/20付])&lt;br /&gt;
&lt;br /&gt;
= キーアサイン =&lt;br /&gt;
== バックスペース ==&lt;br /&gt;
* 推奨割当「Ctrl + BackSpace」&lt;br /&gt;
* バックスペース処理をする（※通常は制御文字 DEL (0x007F) が挿入される）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Editor.ActiveDocument.Selection;&lt;br /&gt;
if (sel.IsEmpty) {&lt;br /&gt;
  sel.DeleteLeft(1);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 強制改行 (インデント無効) ==&lt;br /&gt;
* 推奨割当「Shift + Enter」「Ctrl + Enter」&lt;br /&gt;
* 自動インデントを無視して改行する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Write(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 切り取り (行切り取り無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + X」「Shift + Delete」&lt;br /&gt;
* 非選択時にカーソル行(論理行)を切り取りしない（※通常は行切り取りする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Cut();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー無効) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時にカーソル行(論理行)をコピーしない（※通常は行コピーする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (Document.Selection.Text) Document.Selection.Copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== コピー (行コピー時選択) ==&lt;br /&gt;
* 推奨割当「Ctrl + C」「Ctrl + Insert」&lt;br /&gt;
* 非選択時コピー(行コピー)時にコピーした範囲を選択する（※通常は範囲選択しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== すべて選択 (非スクロール) ==&lt;br /&gt;
* 推奨割当「Ctrl + A」&lt;br /&gt;
* すべて選択時にスクロールしない（※通常は文書の末尾までスクロールする）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶&lt;br /&gt;
Document.Selection.SelectAll();&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加切り取り ==&lt;br /&gt;
* 割当例「Shift + Ctrl + X」など&lt;br /&gt;
* クリップボードに追加する切り取り&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Cut();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 追加コピー ==&lt;br /&gt;
* 割当例「Shift + Ctrl + C」など&lt;br /&gt;
* クリップボードに追加するコピー&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cb = ClipboardData.GetData();&lt;br /&gt;
Document.Selection.Copy();&lt;br /&gt;
ClipboardData.SetData(cb + ClipboardData.GetData());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を複製 ==&lt;br /&gt;
* 割当例「Ctrl + D」「Ctrl + Insert」など&lt;br /&gt;
* カーソル行(論理行)を複製する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.DuplicateLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を削除 ==&lt;br /&gt;
* 割当例「Ctrl + E」「Ctrl + Delete」など&lt;br /&gt;
* カーソル行(論理行)を削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.Delete();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行頭まで/行末まで削除 ==&lt;br /&gt;
* 論理行の行頭/行末まで削除したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 割当例「Shift + BackSpace」など&lt;br /&gt;
* カーソル位置から行頭(表示行)まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  StartOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Shift + Delete」など&lt;br /&gt;
* カーソル位置から行末(表示行)まで削除する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  SetAnchorPos(GetActivePos());&lt;br /&gt;
  EndOfLine(true, mePosView);&lt;br /&gt;
  Delete();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 括弧で挟む ==&lt;br /&gt;
* 割当例「Ctrl + 8」「Ctrl + [ 」など&lt;br /&gt;
* カーソル位置or選択範囲を指定の文字列で挟む&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var pre = &amp;quot;(&amp;quot;;	//前に付ける文字列&lt;br /&gt;
var sur = &amp;quot;)&amp;quot;;	//後に付ける文字列&lt;br /&gt;
Document.Selection.Text = pre + Document.Selection.Text + sur;&lt;br /&gt;
Document.Selection.CharLeft(false, sur.length);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 逆インデント (単一行対応) ==&lt;br /&gt;
* 推奨割当「Shift + Tab」&lt;br /&gt;
* 複数行選択でない場合でも逆インデントする（※通常はタブ挿入）&lt;br /&gt;
* 複数行選択でない場合は、カーソルの位置関係を維持します&lt;br /&gt;
→ マクロ「[[非選択状態でも逆インデント]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.Text.indexOf(&amp;quot;\n&amp;quot;) &amp;lt; 0) {&lt;br /&gt;
  var x = sel.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y = sel.GetActivePointY(mePosLogical);&lt;br /&gt;
  sel.SelectLine();&lt;br /&gt;
  var n = sel.Text.length;&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);&lt;br /&gt;
} else {&lt;br /&gt;
  sel.UnIndent();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 位置関係を維持しない(行選択する)場合は下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!/\n/.test(Document.Selection.Text)) Document.Selection.SelectLine();&lt;br /&gt;
Document.Selection.UnIndent();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付と時刻 (メモ帳仕様) ==&lt;br /&gt;
* 推奨割当「F5」&lt;br /&gt;
* メモ帳のように「時刻 日付」の順で現在日時を挿入（※通常は「日付 時刻」の順）&lt;br /&gt;
→ マクロ「[[日付と時刻を挿入]]」&lt;br /&gt;
または下記のコード&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.InsertDate(meDateTimeDate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上書き保存 (UAC対応) ==&lt;br /&gt;
* 推奨割当「Ctrl + S」&lt;br /&gt;
* UAC が必要な場合は権限昇格して保存&lt;br /&gt;
→ マクロ「[[上書き保存(UAC対応)]]」&lt;br /&gt;
&lt;br /&gt;
== 元に戻す ==&lt;br /&gt;
* 推奨割当「Ctrl + Z」&lt;br /&gt;
* 「元に戻す」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== やり直し ==&lt;br /&gt;
* 推奨割当「Ctrl + Y」&lt;br /&gt;
* 「やり直し」実行時に，保存済みファイルと同じ内容のとき「変更マーク」を消す&lt;br /&gt;
* 速度が気になる場合はサイズ制限の値を変更してください&lt;br /&gt;
→ マクロ「[[少し便利な_Undo/Redo]]」&lt;br /&gt;
&lt;br /&gt;
== 上移動 (先頭行では行頭へ) ==&lt;br /&gt;
* 推奨割当「Up (↑)」&lt;br /&gt;
* 上の行がそれ以上存在しない場合は、行頭(文書の先頭)に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;gt; 1) {&lt;br /&gt;
  sel.LineUp();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.StartOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 下移動 (最終行では行末へ) ==&lt;br /&gt;
* 推奨割当「Down (↓)」&lt;br /&gt;
* 下の行がそれ以上存在しない場合は、行末(文書の末尾)に移動する（※通常は移動しない）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var sel = Document.Selection;&lt;br /&gt;
if (sel.GetActivePointY(mePosView) &amp;lt; Document.GetLines(meGetLineView)) {&lt;br /&gt;
  sel.LineDown();&lt;br /&gt;
} else {&lt;br /&gt;
  sel.EndOfDocument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 対応する括弧に移動 ==&lt;br /&gt;
* 割当例「Ctrl + [ 」「Ctrl + ] 」など&lt;br /&gt;
* カーソル右側に括弧がある場合、対応する括弧に移動する&lt;br /&gt;
→ マクロ「[[対応する括弧に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 行頭に移動 (インデント対応) ==&lt;br /&gt;
* 推奨割当「Home」「Shift + Home」&lt;br /&gt;
* インデント位置＜カーソル位置の場合は、インデント位置に移動する&lt;br /&gt;
* カーソル位置≦インデント位置の場合は、行頭に移動する&lt;br /&gt;
→ マクロ「[[行頭に移動]]」&lt;br /&gt;
&lt;br /&gt;
== 文書の1/4上に/下に移動 ==&lt;br /&gt;
* 割当例「Ctrl + PageUp」など&lt;br /&gt;
* 総表示行数の1/4分、上に移動する（最低4回の移動で文書頭に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineUp(false, (Document.GetLines()/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 割当例「Ctrl + PageDown」など&lt;br /&gt;
* 総表示行数の1/4分、下に移動する（最低4回の移動で文書末に到達）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
Document.Selection.LineDown(false, (Document.GetLines()/4));&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 選択範囲の始点終点を交替 ==&lt;br /&gt;
* 選択範囲の始点と終点(カーソル位置)を入れ替える&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  var anp = GetAnchorPos();&lt;br /&gt;
  var acp = GetActivePos();&lt;br /&gt;
  SetActivePos(anp);&lt;br /&gt;
  SetAnchorPos(acp);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== この文字列を検索 ==&lt;br /&gt;
* 「次/前の文字列を検索」時に移動しない（※通常は次/前に移動する）&lt;br /&gt;
* 範囲選択時は選択文字列で、非選択時は単語選択してから検索を実行します&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  if (IsEmpty) SelectWord();&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY, acp = GetActivePos(), anp = GetAnchorPos();&lt;br /&gt;
  Find(Text, meFindReplaceCase + meFindNext + meFindAround);&lt;br /&gt;
  SetActivePos(acp); SetAnchorPos(anp); ScrollX = sx; ScrollY = sy;&lt;br /&gt;
}&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 標準の移動/選択操作 =&lt;br /&gt;
カーソル移動や行頭/行末移動などは通常、キーアサインを変更することはできませんが、機能を再現したマクロにキーを割り当てることで実現できます。&lt;br /&gt;
* 範囲選択版は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
== 移動 - 上/下/左/右 ==&lt;br /&gt;
;上移動 / 下移動&lt;br /&gt;
* 標準の割当「Up (↑)」／選択版の割当「Shift + Up (↑)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Down (↓)」／選択版の割当「Shift + Down (↓)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.LineDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左移動 / 右移動&lt;br /&gt;
* 標準の割当「Left (←)」／選択版の割当「Shift + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Right (→)」／選択版の割当「Shift + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.CharRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 上頁/下頁/左単語/右単語 ==&lt;br /&gt;
;1ページ上に移動 / 1ページ下に移動&lt;br /&gt;
* 標準の割当「PageUp」／選択版の割当「Shift + PageUp」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageUp(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「PageDown」／選択版の割当「Shift + PageDown」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.PageDown(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;左の単語に移動 / 右の単語に移動&lt;br /&gt;
* 標準の割当「Ctrl + Left (←)」／選択版の割当「Shift + Ctrl + Left (←)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordLeft(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + Right (→)」／選択版の割当「Shift + Ctrl + Right (→)」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.WordRight(false, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 移動 - 行頭/行末/文書頭/文書末 ==&lt;br /&gt;
;行頭に移動 / 行末に移動 (表示行)&lt;br /&gt;
* 論理行の行頭/行末に移動したい場合は &amp;lt;code&amp;gt;mePosView&amp;lt;/code&amp;gt; を &amp;lt;code&amp;gt;mePosLogical&amp;lt;/code&amp;gt; に書き換えてください&lt;br /&gt;
* 標準の割当「Home」／選択版の割当「Shift + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「End」／選択版の割当「Shift + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfLine(false, mePosView);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;文書の先頭に移動 / 文書の末尾に移動&lt;br /&gt;
* 標準の割当「Ctrl + Home」／選択版の割当「Shift + Ctrl + Home」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.StartOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 標準の割当「Ctrl + End」／選択版の割当「Shift + Ctrl + End」&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.EndOfDocument(false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 単語を選択 ==&lt;br /&gt;
* マウス操作「文字をダブルクリック」&lt;br /&gt;
* カーソル位置にある単語(連続する英数字/かな/カナ/漢字)を選択する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectWord();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 行を選択 (論理行/表示行) ==&lt;br /&gt;
* マウス操作「文字をトリプルクリック」&lt;br /&gt;
* カーソル行(論理行)を選択する（カーソルは次行行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Document.Selection.SelectLine();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* マウス操作「行番号をクリック」&lt;br /&gt;
* カーソル行(表示行)を選択する（カーソルは行頭に移動）&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
with (Document.Selection) {&lt;br /&gt;
  EndOfLine();&lt;br /&gt;
  if (Document.Text.charAt(GetActivePos())==&amp;quot;\n&amp;quot;)&lt;br /&gt;
    SetAnchorPos(GetActivePos()+1); //行末が改行の場合、改行も含める&lt;br /&gt;
  StartOfLine(true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ご意見・ご要望 =&lt;br /&gt;
何かありましたら，右の [編集] から追記してください．対応するかもしれません．&lt;br /&gt;
&lt;br /&gt;
* 行を上下に移動・複製&lt;br /&gt;
&lt;br /&gt;
AtomやVisual Studio Codeにある、「Alt＋↑／↓」で行を上下に移動、また「Alt＋Shift＋↑／↓」で上下に複製というのはできるでしょうか？自分で書いてみたところ論理行ではなく表示行のみが移動してしまいうまくいきませんでした。&lt;br /&gt;
&lt;br /&gt;
なおAlt＋矢印キーがMeryでは効かないことは存じておりますので、キーバインドは何か別のもの（Alt+U、Dとか）にする必要があると思います。&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:aozoramsy.zip&amp;diff=2993</id>
		<title>ファイル:aozoramsy.zip</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:aozoramsy.zip&amp;diff=2993"/>
		<updated>2017-12-04T13:36:50Z</updated>

		<summary type="html">&lt;p&gt;Isari: Isari が ファイル:aozoramsy.zip の新しいバージョンを アップロードしました&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;青空文庫形式の見出しやルビ、画像などの注記を色つけ。&lt;/div&gt;</summary>
		<author><name>Isari</name></author>
	</entry>
</feed>