update : 2024/11/17 (Sun)
現在、秀丸エディタQ&A集を秀丸エディタVer.8系に対応させるよう編集作業中です。
このページの内容も、そのままではありませんが反映させている事もあり、正規表現関連以外は、徐々に縮小・整理していきます。
Ver.8は追加・変更が多いので、サイトー企画にある、秀丸エディタの紹介(Ver8.00対応版)を参照してください。
Ver.9の変更点は、秀丸エディタ 新機能の紹介)を参照してください。
説明追加
秀丸エディタ Ver 5.00から変換モジュールが導入されました。変換モジュールライブラリに「Sort」があります。この変換モジュールを導入すれば、秀丸エディタでソートが可能になります。(変換モジュールはマクロからも使用できます。)
秀丸エディタ Ver 8.00から、ソートは、標準添付の変換モジュールに組み込まれたため、別途、変換モジュールを追加する必要はありません。また、TSV/CSV用に、タブ、カンマ区切りに限り、フィールドでソートが可能になってます。(TSV/CSV用ですが、通常のファイルでも使用可能)
変換モジュールの使い方・設定方法は「秀丸エディタ設定」-「変換モジュールを使うには」を参照してください。マクロから変換モジュールを使う方法はマクロから変換モジュールを呼び出す方法を参照してください。
注記追加
Windows(2000、XP)標準のsort.exeは、英文字の大文字・小文字を区別しません。その為、「sort < con > con」を実行しても、期待する結果にならない場合があります。
説明追加
先頭からではなく、途中からソートしたい場合等は、Windows標準のSortではなく、 UNIX系のSortを使えば可能です。 ( Windows標準のSortでも可能ですが、先頭からの文字数を指定するだけなので、固定長以外では使えない。 UNIX系ソートの場合、フィールドの区切り文字を指定し、フィールドでソートすることも可能。 ) UNIX系のソートは以下のURLから入手可能です。
(sort option < con > con の形式で実行してください。)
テキストファイルの内容
cccc 50
bbbb 200
dddd 100
aaaa 20
eeee 8
先頭からソート
aaaa 20
bbbb 200
cccc 50
dddd 100
eeee 8
第2フィールドでソート
dddd 100
aaaa 20
bbbb 200
cccc 50
eeee 8
第2フィールドで、数値としてソート
eeee 8
aaaa 20
cccc 50
dddd 100
bbbb 200
説明追加
Ver.7から「その他」-「動作環境」-「関連付け」で設定を行います。(ブラウザの関連づけ)
上記操作でも変更ができない場合は、「Internet Explorer」にある「開発者ツール」を使用します。「開発者ツール」は「F12」を押すか、メニューの「ツール」-「「開発者ツール」から起動します。
「開発者ツール」が起動したら、メニューの「ファイル」-「Internet Explorerソース表示のカスタマイズ」-「その他」を選択する。
ファイル選択ダイアログが表示されるので、秀丸エディタ(hidemaru.exe)を指定する。
新規追加
編集中のファイルにある、大文字/小文字を変換するには以下の方法があります。
「大文字<->小文字の変換」を使う。
「大文字<->小文字の変換」はカーソルのある文字だけを対象に、大文字<->小文字変換を行います。
A→a B→b
ただし、半角文字しか対応していません。
「編集」メニューの「変換」を使う。
「変換」メニューにある「UPPER CASE」が大文字変換、「lower case」が小文字変換になります。変換機能を使うには、変換する文字範囲を、あらかじめ選択しておく必要があります。「UPPER CASE」、「lower case」共に、半角全角文字を対象に変換を行います。
置換を使う
置換を方法もありますが、1文字単位でしか出来ません。 (正規表現を使っても。複数文字を同時に置換するのは無理です。)
Perl等で使用されている「tr/searchlist/replacelist/」のような、リストを使った置換は、標準では出来ません。(田楽DLL+Bregexp.dllを使って、マクロを組めば可能かもしれない。)それと、エスケープシーケンス(テキスト修飾子)である、\l、\u、\L、\U等も使えません。
秀丸エディタ Ver.8.13β8より、置換時、検索結果に対し、変換モジュールの機能を実行できるようになりました。「UPPER CASE」を指定すれば大文字変換、「lower case」を指定すれば小文字変換が可能です。
「置換で、変換モジュールの機能を使う」を参照してください。
新規追加
秀丸エディタのコマンドに「関連付けで開く」というコマンドが、用意されています。この機能を使えば、編集しているファイルを、関連づけられたアプリケーションで開くことができます。
単純に、関連付け起動を行っているだけなので、ファイルを開いた時の挙動は、アプリケーションに依存します。
たとえば、htmlファイルで実行した場合、編集中のファイルを(保存する必要はあるが)ブラウザで開くことができますが、同じファイルで、複数回の「関連付けで開く」コマンドを実行した場合、複数のブラウザが開くことになります。(最初に開いているファイルをリロードすることはない。)
新規追加
秀丸エディタ Ver.8より、「ファイルを開く」ダイアログの初期状態が指定できます。ただし、新規作成状態(無題の状態)か、常駐秀丸エディタから「開く」を選択した場合のみ、有効です。 (既存のファイルを開いている場合には、設定は無効になる。)
マクロを使う方法もあります。(ファイルを開くときのフォルダ指定を参照)
新規追加
Windowsの「VirtualStore」という機能です。
Windows Vist以降、"C:\Program Files"や、Windowsのシステムフォルダ等、「保護されたフォルダ」に書き込むには、「管理者権限」が必要です。 Windows XPより前のWindowsでは、そのような制限がなかったため、Windows Vistaに対応していないソフトを使用し、「保護されたフォルダ」のファイルを書き換えようとしても、エラーになったり、最悪の場合はアプリケーションがクラッシュします。
その為、過去との互換性を重視し、"Windows Vistaに対応していないソフト"で「保護されたフォルダ」のファイルを書き換えた場合、実際のファイルを書き換えるのではなく、別の場所にファイルを作成し、そのファイルを書き換えるような動作になってます。つまり、"Windows Vistaに対応していないソフト"側から見ると、「保護されたフォルダ」のファイルを書き換えたように見えるが、実際は、Windowsがこっそり違う場所にすり替えているという状態です。
読み込み時も同様で、すり替えた場所にファイルが存在すれば、そちらのファイルを開く事になります。「保護されたフォルダ」のファイルを見た場合、
という別のファイルを開く事になるので、表示される内容が違ってしまいます。
秀丸エディタ 32bit版は、初期状態では、"Windows Vistaに対応していないソフト"に分類されていますが、設定により"Windows Vistaに対応したソフト"に切り替える事が可能です。
動作環境
├32bit版
│└□VirtualStoreを無効にする(再起動が必要)
説明追加
秀丸エディタ Ver5.05以降、パラメータが追加されています。2番目のパラメタを指定すると、自分自身のウィンドウの重なり位置を調節できます。
初期状態。アルファベット(a~d)がウィンドウハンドル(ウィンドウ識別番号)、数字がウィンドウ順番です。
┏━━━━━━━┓ ┃d ┃ ┣━━━━━━━┫ ┃3 ┏━━━━━┻━┓ ┃ ┃c ┃ ┃ ┣━━━━━━━┫ ┃ ┃2 ┏━━━━━┻━┓ ┃ ┃ ┃b ┃ ┗━┫ ┣━━━━━━━┫ ┃ ┃1 ┏━━━━━┻━┓ ┃ ┃ ┃a ┃ ┗━┫ ┣━━━━━━━┫ ┃ ┃0 ┃ ┗━┫ ┃ ┃ ┃ ┗━━━━━━━┛
「次の秀丸エディタ」に切り替えるため、2番目のウィンドウをアクティブにする。(setactivehidemaru 1;) 単純に2番目のウィンドウ(b)が先頭に移動するだけなので、(a)と(b)が入れ替わるだけ。再度2番目のウィンドウをアクティブにしても、(a)と(b)が入れ替わるだけで、(c)には移動しない。
┏━━━━━━━┓ ┃d ┃ ┣━━━━━━━┫ ┃3 ┏━━━━━┻━┓ ┃ ┃c ┃ ┃ ┣━━━━━━━┫ ┃ ┃2 ┏━━━━━┻━┓ ┃ ┃ ┃b ┃ ┗━┫ ┣━━━━━━━┫ ┃ ┃0 ┣━┓ ┃ ┃ ┃ a┃ ┗━┫ ┣━┫ ┃ ┃ 1┃ ┗━┳━━━━━┛ ┃ ┃ ┃ ┗━━━━━━━┛ |
←→ |
┏━━━━━━━┓ ┃d ┃ ┣━━━━━━━┫ ┃3 ┏━━━━━┻━┓ ┃ ┃c ┃ ┃ ┣━━━━━━━┫ ┃ ┃2 ┏━━━━━┻━┓ ┃ ┃ ┃b ┃ ┗━┫ ┣━━━━━━━┫ ┃ ┃1 ┏━━━━━┻━┓ ┃ ┃ ┃a ┃ ┗━┫ ┣━━━━━━━┫ ┃ ┃0 ┃ ┗━┫ ┃ ┃ ┃ ┗━━━━━━━┛ |
「次の秀丸エディタ」で順次ウィンドウを切り替えるには、先頭のウィンドウを最後に移動する必要があります。第二引数を指定し、先頭のウィンドウを最後に移動させる。
┏━━━━━━━┓ ┃d ┃ ┣━━━━━━━┫ ┃2 ┏━━━━━┻━┓ ┃ ┃c ┃ ┃ ┣━━━━━━━┫ ┃ ┃1 ┃ ┃ ┃ ┏━━━━━┻━┓ ┗━┫ ┃b ┃ ┃ ┣━━━━━━━┫ ┃ ┃0 ┣━┓ ┗━┫ ┃ a┃ ┃ ┣━┫ ┃ ┃ 3┃ ┃ ┃ ┃ ┗━┳━━━━━┛ ┃ ┃ ┃ ┃ ┃ ┗━━━━━━━┛ |
→ |
┏━━━━━━━┓ ┃d ┃ ┣━━━━━━━┫ ┃1 ┏━━━━━┻━┓ ┃ ┃c ┃ ┃ ┣━━━━━━━┫ ┃ ┃0 ┃ ┃ ┃ ┣━┓ ┗━┫ ┃ b┃ ┃ ┣━┫ ┃ ┣━┻━┓ ┗━┳━┳━━━┛ a┃ ┃3 ┣━━━━━━━┫ ┃ ┃ 2┃ ┃ ┃ ┃ ┗━┫ ┃ ┃ ┃ ┃ ┃ ┗━━━━━━━┛ |
→ |
┏━━━━━━━┓ ┃d ┃ ┣━━━━━━━┫ ┃0 ┣━┓ ┃ ┃ c┃ ┃ ┣━┫ ┃ ┃ 3┃ ┃ ┣━┻━┓ ┗━┳━┳━━━┛ b┃ ┃ ┣━━━━━━━┫ ┃ ┃2 ┏━━━━━┻━┓ ┗━┫ ┃ a┃ ┃ ┣━━━━━━━┫ ┃ ┃ 1┃ ┃ ┃ ┃ ┗━┫ ┃ ┃ ┃ ┃ ┃ ┗━━━━━━━┛ |
説明追加
現在の秀丸(Windows95以降対応バージョン)では、設定は全てレジストリに保存されています。 iniファイル関連の関数で、"HIDEMARU.INI"にアクセスすると、自動的にレジストリをアクセスするようになっていますが、これは16bit版秀丸との(マクロの)互換性のための動作です。現状では、レジストリアクセス関数で、レジストリから値を取得する方がいいでしょう。
// (例) 引用符を取得するマクロサンプル ---------------------
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
if(result){
$inyoufuini = getregstr("RefMark");
closereg;
#inyoufuiniLen = strlen($inyoufuini);
if(#inyoufuiniLen <= 2){
$inyoufu = "";
}else{
$inyoufu = midstr($inyoufuini, 1, #inyoufuiniLen - 2);
}
message $inyoufu;
}else{
message "引用マークの取得に失敗しました。\nマクロを終了します。";
}
endmacro;
// (ここまで)-----------------------------------------------
説明追加
秀丸エディタ Ver 5.00から変換モジュールが導入されました。変換モジュールライブラリに「uniq」があります。この変換モジュールを導入すれば、秀丸エディタで重複行の削除が可能になります。(変換モジュールはマクロからも使用できます。)
変換モジュールの使い方・設定方法は秀丸エディタ設定の変換モジュールを使うにはを参照してください。
正規表現を使う方法もあります。
検索文字:(^.+\n)\1
置換文字:\1
連続している行を1行にします。同じ行が複数連続する場合には、複数回実行する必要があります。
新規追加
自動起動マクロにはマクロは一つしか指定できません。複数のマクロを登録するには、ダミーのマクロを用意し、その中で実行したいマクロを指定します。マクロ実行中に、マクロを実行するには、"execmacro"文を使用します。
//ダミーマクロの例
execmacro "実行したいマクロ名その1";
execmacro "実行したいマクロ名その2";
execmacro "実行したいマクロ名その3";
新規追加
基本的には マクロのバグ(?)で、原因としては 以下の内容が考えられます。
他の人が作ったマクロの場合は、作った人に連絡するようにして下さい。
秀丸エディタ Ver.8.00を使用している場合、マクロにバグが無くても、「DLLがロードされていないのにdllfunc関数が使われました」と、表示される場合があります。 (loaddll関数の場合を参照)
新規追加
浮動小数点演算を行うには、浮動小数点数版(統合版)が必要ですが、WSHを使えば、多少手間がかかりますが、通常版でも浮動小数点演算が可能です。
"ScriptControl"を使用し、WSHで演算させて、文字列として、取り込みます。
注意:64bit環境では、"ScriptControl"はサポートされていないので、以下のサンプルは動作しません。
#sc = createobject("ScriptControl");
if(#sc == 0){
message "オブジェクトの作成(ScriptControl)に失敗しました。";
endmacro;
}
setpropstr #sc,"Language", "VBScript";
if(!result){
message "プロパティの設定(Language)に失敗しました。";
endmacro;
}
$ret1 = callmethod_returnstr(#sc, "Eval","cstr(1.01+0.03)");
if(getresultex(10) == false){
message "Eval(1)の実行に失敗しました。";
releaseobject #sc;
endmacro;
}
message $ret1;
$ret2 = callmethod_returnstr(#sc, "Eval","cstr(1.155-0.03)");
if(getresultex(10) == false){
message "Eval(2)の実行に失敗しました。";
releaseobject #sc;
endmacro;
}
message $ret2;
$ret3 = callmethod_returnstr(#sc, "Eval","cstr(1.155/0.3)");
if(getresultex(10) == false){
message "Eval(2)の実行に失敗しました。";
releaseobject #sc;
endmacro;
}
message $ret3;
releaseobject #sc;
endmacro;
内容変更
ファイル編集中に、どの行を編集したか知りたい場合は、以下の手順で編集個所を知ることが出来ます。
[手順]
内容追加
説明追加
検索系文を使って検索する
「動作環境」-「ユーザーインターフェース」-「検索での表示」で、「範囲選択」が選択されている必要があります。ちなみに、この選択状態は、searchmodeキーワードで知ることができます。
以下を追加
秀丸エディタ Ver 6.00から追加されたsetcompatiblemodeを使用すれば、「検索での表示」の設定を、マクロ実行時にレジストリを書き換えないで、一時的に変更することが可能です。
注意書き追加
endsel;を実行して選択モードを終了しても、範囲選択状態ままカーソル移動コマンドを使うと、移動した場所まで範囲選択状態になります。動作的にはおかしいけど、現状(2004/05/22)においては仕様ということです。
範囲選択した後の操作(コマンド?)で範囲選択が解除されれば問題はないが、解除されない場合にカーソル移動を行うと思わぬ結果になるので注意。
内容の訂正と追加
ちなみに、gettext文を実行すると、(gettext文での選択範囲が、秀丸ウィンドウ上で範囲選択されている範囲と重なっているか否かに関わらず)範囲選択は解除されます。
秀丸エディタVer5.00β5より、gettext(gettext2)文に第5パラメタが追加され、範囲選択を維持することができるようになりました。(0:範囲選択解除 1:範囲選択保持 省略した場合は0と見なされる。)
秀丸エディタVer5.00β4より、gettext2文が追加されました。gettext文との違いは、columnとlinenoで、指定を行うところです。
検索系のコマンドと併用する場合、"検索での動作"の設定にかかわらず、マッチした範囲を取り込むには、 seltopx~selendyキーワードではなく、foundtopx~foundendyキーワードを使うといいでしょう。
新規追加
秀丸エディタVer.4.10より、ウィンドウのタブ化が可能になりました。さらに、Ver.5.00より複数タブウィンドウにも対応しました。
タブモードが有効な場合、通常と同じくopenfile文を使えば、アクティブなタブウィンドウに、タブとして追加されます。
新規のタブウィンドウとして開く場合は、起動オプション"/i"を指定します。(Ver.5.00以降)
現在のタブウィンドウから、別のタブウィンドウまたは新規タブウィンドウに移動するには、 settabgroup文を使います。
タブ間の移動にはnexttab(次のタブ)、prevtab(前のタブ)を使います。(Ver.5.00以降) Ver.4.00系は、複数タブウィンドウをサポートしていないので、通常の移動命令で切替が可能です。
openfile文で座標指定が可能ですが、タブモードの場合、"/i"オプションを併用する場合、または、他に秀丸ウィンドウが存在しない場合以外は、アクティブなタブウィンドウに追加される為、座標指定自体が無効化されます。
タブモード時は、"ウィンドウサイズを自動調整する設定"が無効化されます。
新規追加
秀丸エディタVer.4.10以降から、"常に手前に表示"が追加されました。タブモードの場合、"常に手前に表示"してある、タブグループから分離すると、 "常に手前に表示"の設定も引き継がれます。
内容追加
●作例3
slide_moon氏作成マクロ Magic Key Ver.0.11 -- 多工程短縮キー
作例2で紹介されている"KEY_ASIN.MAC"の模写マクロである「magickey.mac」と保守マクロである「magickey_cfg.mac」のセット。追加機能として、多段階のキーストローク設定が可能。
●作例4
ませま氏作成マクロ キー割り当て拡張マクロ Ver. 0.03
作例2で紹介されている"KEY_ASIN.MAC"の機能拡張版。拡張子毎の割り当て変更、多段階のキーストローク設定が可能。また、200 以上の独自コマンド群(マクロ)がセットになっている。
●作例5
IKKI氏作成マクロ "Takoashi"
秀丸エディタ ver 8.56 以降で使用可能なマクロです。
等の機能があります。
grepdialog2文を追加。
grepdialog2文のresultはgrep文と同じになるようにする。
新しい文
setcompatiblemode
fold, unfold, nextfoldable, prevfoldable, selectfoldable
foldall, unfoldall
rangeeditin, rangeeditout
nextoutlineitem, prevoutlineitem
showoutline, showoutlinebar, showfoldingbar
新しい数値キーワード
foldable, folded, rangeedittop, rangeeditend, rangeeditmode, screentopy
変更
config "x"の追加 xOutlineBar, xRangeEdit, xFolding, xFoldingTwigBar
configcolor, getconfigcolor で新しい色
loadhilight, savehilight で対象を指定
input関数のUnicode対応
setcompatiblemode で排他制御(同じファイルを開く場合)と「検索での表示」の指定。
title でパラメタを拡張してステータスバー、見出しバー、タブモードのタブ名の指定可能にした。
getfocus追加。(値=1:編集エリア,2:アウトライン解析の枠,3:検索ボックス,またはウィンドウハンドル)
setfocus追加。
nextfoldable, prevfoldable で失敗時にresultを返すようにする。
iskeydownを拡張してキーのトグル状態を取得できるようにする。
nextpage,prevpage でパラメタを指定して1ページを修正して加算する行数を指定できるようにする。
loadhilightのresultで読み込まれた内容のフラグを返すようにする。
getpathhist,setpathhist でヒストリに常駐の状態を取得/設定できるようにする。
iconthistabを追加。
マクロで複数行コメント/*~*/に対応
searchoptionの追加ビット
searchdown等の追加パラメタ
masknormal maskcomment maskifdef maskscript
maskstring masktag maskonly loop noclose
(grep用) backup preview outputsingle
またはsearchoption相当の数値直接
grepreplace, grepreplacdialog2文追加
refpaste(引用付き貼り付け)
tolower、toupper関数追加
filter関数追加
eventキーワード、geteventparam関数、seteventnotify文追加
autocomplete文追加
gowordtop2 と gowordend2 を追加
openbyshellで引数を指定できるようにした
config "x:~";とgetconfig()で指定できるものに、以下のものを追加。
AutocompFlag1(autocomplete文の第2パラメタと同じ)
AutocompFlag2(autocomplete文の第3パラメタと同じ)
AutocompDic(autocomplete文の第4パラメタと同じ)
AutocompAuto
setfloatmode追加(浮動小数点数版(統合版))
configstateキーワード追加
encodeキーワード追加(charsetと同じ)
syncoutline追加
追加された命令の詳細は、マクロヘルプを参照して下さい。
Ver.8からVer.7からの変更点は、かなり多い為、変更内容については、サイトー企画のページを参照してください。
秀まるおのホームページ(サイトー企画)-秀丸エディタの紹介(Ver8.00対応版)(追加コマンド/設定一覧) にある、「マクロ」の項目を参照して下さい。
追加キーワード
platform
settingdir
backupdir
compfilehandle
outlinehandle
lineselecting
selectionlock
mouseselecting
scrolllinkhandle
xpixel
ypixe
formwidth
追加関数
マクロ引数
getarg
静的変数関連
setstaticvariable
getstaticvariable
整形関連
form
unform
showformline
レジストリ操作
getregbinary
writeregbinary
カラーマーカー関連
colormarkerdialog
deletecolormarker
deletecolormarkerall
文字列操作関連
wcslen
wcsleftstr
wcsrightstr
wcsmidstr
wcsstrstr
strrstr
wcsstrrstr
byteindex_to_charindex
charindex_to_byteindex
wideindex_to_charindex
charindex_to_wideindex
DLL関連
dllfuncw
dllfuncstrw
loaddll(関数版)
検索関連
searchoption2
findspecial
内容比較関連
prevcompfile
nextresult
prevresult
クリップボード関連
getclipboardinfo
copyformed
poppaste2
cutline
cutword
カーソル移動関連
backtab
forwardtab
moveto2
gotagpair
ウィンドウ関連
fullscreen
refreshoutline
refreshtabstop
ブックマーク関連
loadbookmark
savebookmark
その他
getresultex
seterrormode
deletefile
quitall
autocompstate
deleteline2
beginlinesel
charcount
showcharcount
runex
help4
help5
help6
enablebreak
disablehistory
自動起動マクロの追加
アクティブ切り替え後
COM関係追加
createobject
getobject
callmethod
callmethod_returnstr
callmethod_returnnum
callmethod_returnobj
getpropstr
getpropnum
getpropobj
member
setpropstr
setpropnum
setpropobj
releaseobject
getcollection
sleep
keepobject
ファイルマネージャー枠(HmExplorerPane.dll)関数
SetMode
GetMode
LoadProject
SaveProject
GetProject
GetWindowHandle
アウトライン枠(HmExplorerPane.dll)関数
Output
Push
Pop
GetWindowHandle
秀まるおのホームページ(サイトー企画)-秀丸エディタの紹介(Ver8.00対応版)(追加コマンド/設定一覧) にある、「マクロ」の「・変更,パラメータ追加」を参照して下さい。
変更、パラメータ追加等
getcolormarker で行末
colorcode で行末
menu でセパレータ
openbyshellでresult
openfile で不足分のエンコード指定, wb ws 指定
windowstate2 全画面表示かどうか
print ダイアログを出す
appendsave パラメータ対応
split 新タイプ,左右
savedesktop restoredesktop ファイル名指定
updated 他の秀丸エディタからも取得
loadkeyassign savekeyassign 設定ファイル用のフォルダ
clearcliphist 指定項目削除
setcompatiblemode 貼り付け後のカーソル位置
scrolllinkでウィンドウ指定
insert文で\x0d \x0aを正確解釈するパラメータ
replaceall等の数値指定と合わせて、inselectも指定できるように
execmacroでパラメータ渡し
nextcompfileの追加パラメータ
compfileの追加パラメータ
grep文の追加パラメータ
setsearchの追加パラメータ
geteventparam(2)の戻り値
fontmodeは、固定ピッチフォントでもTSV/CSVモードであればプロポーショナル扱いに
文字列型変数のサイズを大きくする
loaddll関数,dllfunc等で複数扱えるように
Ver.8.00からVer.8.10からの変更点として、主なのは、DirectWrite対応です。
追加キーワード
formline(整形ラインの表示の有無)
その他
マクロ実行時、常駐秀丸のメニューから中断できるようにする。
変更、パラメータ追加等
searchdownしたときもprevposの直前の位置の対象にする。
追加
複数選択関連
変更、パラメータ追加等
beginlinesel 範囲選択が含まれる行すべてを行単位の選択にしてから、行選択モードに移る。
copyline パラメータに1を指定すると、範囲選択が含まれる行を、すべて行選択にしてコピーする。
cutline パラメータに1を指定すると、範囲選択が含まれる行を、すべて行選択にしてカットする。
colormarker パラメータに開始位置と終了位置を指定可能にした。(範囲選択していなくても、指定した箇所にカラーマーカーをつける。)
existfile 第二パラメータに2を指定すると、ファイルサイズを取得可能にした。ファイルサイズは、マクロの数値範囲である2G(2147483647)が最大となる。存在しないファイルを指定した場合は、0(zero)が取得できる。
setcompatiblemode 0x00100000; で、複数選択対応。
colormarker文で、スタイルに-1を指定もできるように修正。
runex プログラム実行のパラメータにUTF-8を追加。
run文のコマンドラインに%cや%lを書けるように修正。
%l:カーソル位置の行番号(先頭が1)
%c:カーソル位置の桁位置(行頭が1)
その他
searchdown等に incolormarker パラメータを追加
searchoption2 で追加の条件で「指定の範囲/カラーマーカー内」が有効かどうかの判定を追加
replaceallなどでaskオプション指定時、置換を実行した回数をresultに入れるように修正。
searchdownなどの文で、数値として検索オプションを書く書き方で、2つ連続して書くと searchoption2相当も記述できるように修正。
例:searchdown "a", #searchoption1, #searchoption2;
追加
変更、パラメータ追加等
追加
変更、パラメータ追加等
その他
秀丸エディタ本体の更新内容に関しては、以下になります。
Ver.8.86は、マクロ関連の変更はありません。
追加
変更、パラメータ追加等
その他
Ver.8.93は、マクロ関連の変更はありません。
Ver.8.99.4は、マクロ関連の変更はありません。
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.13
Ver.9.14は、マクロ関連の変更はありません。
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.15
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.16
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.17
Ver.9.18は、マクロ関連の変更はありません。
秀丸エディタ本体の更新内容に関しては、秀丸エディタ Ver9.19の変更点を参照してください。
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.19
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.20
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.21
秀丸エディタ本体の更新内容に関しては、秀丸エディタ Ver9.22の変更点を参照してください。
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.22
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.23
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.24
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.25
Ver.9.26は、マクロ関連の変更はありません。
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.27
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.28
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.30
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.32
Ver.9.33は、マクロ関連の変更はありません。
Ver.9.34は、マクロ関連の変更はありません。
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.35
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.37
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.9.39
説明追加
hmjre.dllは、"$"が、テキストの途中に現れる"\n"にもマッチします。その為、ファイル2にもマッチします。また、秀丸エディタ Ver.8より、正規表現中に、(?#maxlines:数値)という形式で、正規表現DLLに渡す行数を指定できます。 (正規表現のコメント形式に基づく指示なので、検索には影響しない。)
説明追加
hmjre.dllでは、タグ付き正規表現はPerlと同じく、括弧「()」を使用します。(V1.69より(秀丸エディタVer5.03以降))
"\f"でのタグ指定は、現状(2015/06/03)でも有効ですが、内部処理的には、かなり面倒なことをやっているので、使わないほうがいいです。タグ付き正規表現に対応していない「jre32.dll」や「hmjre.dll(V1.69未満)」で、どうしてもタグ付き正規表現を使いたい場合以外は、 "\f"を使うメリットはないです。(検索パターンにもよりますが、最低でも15~20%程度遅くなる。)
"\f"と、括弧を使ったタグ指定の整合性をとるために、hmjre.dllのタグ指定には、制限があります。タグ付き正規表現(hmjre.dll 括弧での指定)を参照。
また、"\f"を使った場合、検索文字列内でのタグ参照はできません。
例)検索文字列: ..\f-\0
正規表現が有効で、検索に"\f"が含まれる場合、タグの処理は秀丸エディタ本体が行います。検索に"\f"が含まれない場合、括弧によるタグの処理は、正規表現DLLで行われます。 "\f"と括弧が混在するタグ指定は出来ません。混在した場合は、秀丸エディタ本体で"\f"を処理する都合上、"\f"が優先され、括弧は無視されます。
2019/08/31 正規表現スピードチェック実行結果を更新
マクロ用DLLと異なり、正規表現エンジンは、使用する秀丸エディタと同じbitのDLLしか使えません。
64bit対応しているのは、hmjre.dll、hmonig.dllです。 JRE32.DLL、BRegIf.dllの64bit版はありません。
秀丸エディタの正規表現エンジンは、JRE32.DLLからhmjre.dllに変更になっています。 hmjre.dllはJRE32.DLLに対して、以下の拡張が行われています。
パターンの繰り返し回数指定
{n}
{n,}
{n,m}
後方一致指定
(?=expression)
後方不一致指定
(?!expression)
前方一致指定
(?<=expression)
前方不一致指定
(?<!expression)
一般的正規表現互換のタグ付き正規表現
\1 \2 ...
繰り返しマッチングでのものぐさ指定(最短一致)
*?
+?
??
{n,m}?
ヒットした扱いにするタグ指定
(?\tag-number)
hmjre.dllのVer.3.00以降、さらに拡張が進み、
以上の機能が、追加されています。詳細は、hmjre.dllのヘルプを参照してください。
BREGEXP.DLLを使うことにより、Perl互換(1996/05/25辺りのPerl5)の正規表現が使えます。使用するにはBRegIf.dllが必要です。
hmjre.dllに比べ、使用できる正規表現は増えますが、以下の制限があります。
2007/09/16に公開されたバージョン(BRegIf.dll v0,0,2,2)では、K.Takata氏の修正が取り込まれ、括弧を使用した場合でも、置換で"\1"によるタグ参照が可能です。 "bregonig.dll"を認識し、"bregonig.dll"-->"BREGEXP.DLL"の順番でDLLのロードを試みます。明示的に"BREGEXP.DLL"を使用したい場合は、"bregonig.dll"をリネームするか、削除しておく必要があります。
bregonig.dllを使うことにより、鬼車の正規表現が使えます。 (使用できる正規表現や、制限事項等は、bregonig.dllのドキュメントを参照) 使用するにはBRegIf.dll(v0,0,2,2)が必要です。
BRegIf.dll+BREGEXP.DLLと同じ制限があります。
bregonig.dllのインターフェースが、"BREGEXP.DLL"と同じであることを利用して、動作させています。
"bregonig.dll"-->"BREGEXP.DLL"の順番でDLLのロードを試みます。あまりないとは思いますが、"bregonig.dll"のロードに失敗した場合、"BREGEXP.DLL"が使用されることになります。 "bregonig.dll"を使用する場合は、"BREGEXP.DLL"を削除、またはリネームしておいた方がいいかもしれません。
"bregonig.dll"のバージョンが1.41未満の場合、BRegIf.dllの独自拡張機能である、";1"によるサブパターン指定が、正常に動作しません。サブパターン選択を使用する場合は、Version.1.41以降が必要です。
bregonig.dllは、Unicode対応版のVer.2.00以降がありますが、BRegIf.dllからは、Unicode対応のAPIは呼び出していません。その為、Ver.2.00以降を使用しても、動作はANSI/Shift_JIS 専用版と同じです。
hmonig.dllを使うことにより、鬼車の正規表現が使えます。 Ver.0.5.9.0以降では、鬼雲(Onigmo (Oniguruma-mod) ) の正規表現が使えます。 (使用できる正規表現や、制限事項等は、hmonig.dllのドキュメントを参照)
以下の制限があります。
hmjre.dll Ver.4系の動作検証用マクロ(秀まるお氏作成)を、ちょっと改造したマクロの実行結果です。
以下のDLLをロードし、実行しています。
結果が「-1」なのは、チェックをスキップした場合です。
測定結果10回分の平均値です。
結果 | HmJreV5 | hmonig(UNICODE) |
No.001 | 165.6 | 140.4 |
No.002 | 254.6 | 179.7 |
No.003 | 4843.7 | 137.6 |
No.004 | 167.2 | 151.6 |
No.005 | 13311.3 | 132.7 |
No.006 | 390.8 | 150.1 |
No.007 | 164.1 | 153.1 |
No.008 | 229.5 | 211.2 |
No.009 | 201.5 | 6896.4 |
No.010 | 143.6 | 157.7 |
No.011 | 870 | 293.8 |
No.012 | 179.5 | 303 |
No.013 | 179.6 | 181.2 |
No.014 | 183 | -1 |
No.015 | 189.2 | 218.7 |
No.016 | 235.8 | 195.3 |
No.017 | 215.6 | -1 |
No.018 | 194 | -1 |
No.019 | 223.4 | 534.6 |
No.020 | 211 | 531.3 |
No.021 | 218.8 | 1399.8 |
No.022 | 229.8 | 1304.7 |
No.023 | 214 | 137.6 |
No.024 | 270.4 | 157.8 |
No.025 | 6219 | 159.4 |
一致して欲しくない文字の集合。指定された文字に一致しない文字にマッチする。 "\n"も含め、"一致しない文字"全てにマッチします。("."と違い、"\n"を含めたくない場合は、明示的に指定する必要あり。)
DLLのページにある、ファイルパスの分割で、ファイル名を分割するのに、否定クラス([^\\]+)を使用しているが、対象文字列を、
$name = "C:\\Program Files\\Hidemaru\\hidemaru.exe\n";
====追加
にすると、最後のファイ名の所で、改行文字までマッチします。否定クラスを使う場合、意図しない箇所までマッチする事があるので、注意が必要です。
一般的(?)な正規表現と違い、ネストした括弧に対応していないので注意。一番浅い括弧をタグと認識する。
aa(bbb(ccc)dddd)(eeeee)
============ =====
\1 \2
(ccc)はタグと認識しない。
肯定先読み、否定先読みとも呼ばれています。 "^"や"$"と同じアンカーで位置にマッチする。単独で指定した場合は、"文字"にマッチしないので、「検索文字列の強調表示」しても強調表示されない。
後方不一致/否定先読みの例1(単独で使用した場合)
(?!A) ==> "A"でない文字の先頭にマッチする。
後方不一致/否定先読みの例2
Hidemaru(?!Editor) ==> "Editor"が後ろにある、"Hidemaru"にマッチする。
後方不一致/否定先読みの例3
最後にある必要はなく、以下のような書き方もできます。
(?!000)[0-9]{3} ==> "000"ではない3桁の数
正確(?)には、「"000"に一致しない3桁の数字」になるのかな?「"000"が前にない3桁の数字」ではないので注意。
後方一致/肯定先読みの例
(?=000)[0-9]{3} ==> "000"に一致する、3桁の数字
上記、(1)と(3)は、正規表現のチェック開始位置は、同じです。
もし、後方一致/肯定先読みではない場合は、
000[0-9]{3}
という動作になります。
後方一致/肯定先読み、後方不一致/否定先読み が、チェック開始位置を動かさない為、以下の様な書き方をした場合、両方の条件を満たす場合のみ、マッチするような動作になります。
(?!000)[0-9]{3} ==> "000"ではない3桁の数
(?=000)[0-9]{3} ==> "000"に一致する、3桁の数字
肯定後読み、否定後読みとも呼ばれています。 "^"や"$"と同じアンカーで位置にマッチする。単独で指定した場合は、"文字"にマッチしないので、「検索文字列の強調表示」しても強調表示されない。
(?<=A) ==> "A"の最後(末尾)にマッチする。
"後読み"と言われているように、最後にマッチ判定を行います。
(<=aaa)(bbb)ccc(ddd) ==> (bbb)ccc(ddd)にマッチする箇所を探してから、
(<=aaa)にマッチするか判定する。
使用するDLLによって、制限があるので注意すること。
秀丸エディタVer.8より、grepに「ヒットしない行」というオプションが追加され、秀丸エディタの機能で、条件に一致しない行を列挙可能になっています。
BRegIf.dllはBREGEXP.DLLへの仲介を行うだけでなく、独自の拡張が行われて、パターンの否定が出来ます。(詳細は添付されているテキストファイルを参照)
hmjre.dllの場合は、後方不一致指定を使えば可能。
^((?!一致しない文字列).)+$
参考サイト:正規表現パズル
一致しない条件が一文字または、どれか1文字という場合は、
^[^a]+$
という、否定クラスを使う方法もあります。
以下の正規表現は、"ab"を含まないという表現にはならないので、注意すること。
^([^a][^b])+$
\wは一般的に、単語構成文字([a-zA-Z_0-9])のクラス略記法ですが、使用するDLLによって、扱いが異なります。(正規表現は処理系毎に、微妙に異なることが多い事と、多言語対応による。)
JRE32.DLLと同様のため、[a-zA-Z_]+ になります。数字が含まれない事と、文字ではなく、文字列にヒットします。
[a-zA-Z_0-9] になります。
[a-zA-Z_0-9]+2バイト文字の範囲(漢字、カタカナ、ひらがな) になります。(使用するロケールに従い、単語構成文字にマッチする。)日本語の文章を、「\w+」で検索すると、ほぼ全ての文字にマッチします。その為、「\b」(単語境界)も影響を受けます。
2015/06/08現在、正規表現検索でShift_JIS範囲外の文字を正常に扱えるのは、hmjre.dll、hmonig.dll(Ver.5.0以降)だけです。他のDLL(BRegIf.dll(BREGEXP.DLL、bregonig.dll)、hmonig.dll(Ver.5.0未満)、JRE32.DLL)は、基本的にShift_JIS専用で、 Unicodeには対応していません。
検索が行われない訳ではありませんが、
等は、正常な結果を返さない場合があります。
bregonig.dllは、Unicode対応版のVer.2.00以降がありますが、BRegIf.dllからは、Unicode対応のAPIは呼び出していません。その為、動作はVer.1系(ANSI/Shift_JIS 専用版)と同じです。(Ver.2.00以降を使用しても、Ver.1系と同じ動作になる)
秀丸エディタで使用できるタグの上限は、hmjre.dllの仕様から9までとなります。
BRegIf.dll + bregonig.dll、hmonig.dll自体は、10以上も指定可能ですが、秀丸エディタ側から10以上を取得できないので、実質10以上は、使用できません。
正確には、検索時に後方参照で使用する場合は、DLL内の処理で済むため、10以上も使用可能です。置換は、秀丸エディタ側で処理を行うため、10以上は使用できません。
秀丸エディタVer.8.58β1(HmJre.dll V4.13)より、15まで指定可能になりました。
\g{数字}
という指定方法になります。