last updated:2023/12/27

←前へ 次へ→
機能別Q&A 質問番号順Q&A


[HMM0032A]

●「検索での表示」の設定による動作の違い

Q.
ある文字列を検索させて消去したいのですがうまくいきません。

A.

たとえば、

秀丸エディタ

という内容で、"秀丸"を検索し削除する為に、

gofiletop;
searchdown2 "秀丸";
if(result){
    message "削除します";
    delete;
}
endmacro;

というマクロを作った場合、削除されるのが"秀丸"ではなく、 "秀"という一文字しか削除できないという状況の対処方法です。

「その他」→「動作環境」→「検索」→「検索の動作-検索での表示」が[点滅]になっていると、検索にマッチした箇所を削除できません。[範囲選択]にする必要があります。

「検索での表示」が[点滅]になっている場合、選択されているように見えるますが、実際は選択されていません。その為、「delete;」等の命令を実行しても、カーソル位置にある文字を消すだけの動作になります。 (範囲選択していれば、選択範囲が削除されますが、範囲選択されていないので、対象がカーソル位置のみになっている)

「setcompatiblemode文」を使えば、マクロ実行時に「検索での表示」の設定を、一時的に変更できます。

setcompatiblemode 0x00000200;

setcompatiblemode文の設定抜粋

0x00000000 マクロの標準動作(動作環境に従う)
0x00000100 点滅表示
0x00000200 範囲選択

以下のようにマクロを変更すれば、「検索での表示」の設定を変更しなくても、"秀丸"という検索にマッチした文字を削除できます。

setcompatiblemode 0x00000200;
gofiletop;
searchdown2 "秀丸";
if(result){
    message "削除します";
    delete;
}
endmacro;

←前へ 次へ→
機能別Q&A 質問番号順Q&A