読者です 読者をやめる 読者になる 読者になる

じゅにゃくんのはてブロ。

ブログ不精なんですが...。

Sublime Text2のRegReplaceプラグイン(マクロ記録中の文字列検索が効かない代替案)

開発

一年ほど前に、

sublime textのマクロは文字検索を記録しない? [追記アリ] - じゅにゃくんのはてブロ。

こんなエントリを書いてからSublime Textは個人的に痒いところに手が届きにくいなーと感じて積極的に触らなくなってしまってました。

その後、キーマクロ記録中の文字列検索が効かない件はどうなっているのかを調べてみたのですがあんまり進展がないようです。キーマクロで文字列検索を併用することは多用しているんだけど、こういうニーズ自体は特殊なんでしょうかね…。

英語圏のコミュニティサイトあたりでは「どうするの?」みたいなのがいくつか見つかります。その回答として「RegReplaceプラグインを使ってみれば?」と書いてあり、どんなものか使ってみようじゃないかと試してみましたよ。


RegReplaceはPackage Controlからインストール出来るようなのでいつものようにインストール。使い方や設定はRegReplaceのサイトを見ればわかるかと。英語だけどがんばって読もう。

置換ルールは定義ファイルに書き込む…?
えー、いちいち定義ファイルに書き込まなきゃならないのって面倒くさ…いや、面倒くさがらず試そう。
ということで、

<html>
<head>
<!-- ここにヘッダ情報を書き込みます -->
</head>
<body>
<!-- ここにHTMLのボディをを書き込みます -->
</body>
</html>

こんなHTMLファイルのコメントを削除してみます。

HTMLコメント削除の置換ルールは、RegReplaceのデフォルト定義ファイルで"remove_html_comments"という名前で定義されているのでそれを、

[
    {
        "keys": ["super+shift+r"],
        "command": "reg_replace",
        "args": {"replacements": ["remove_html_comments"]}
    }
]

このようにCMD+Shift+'r'のコンビネーションで起動させるように、キーバインディングファイルに書き込みます。
実際に起動してみると、

<html>
<head>

</head>
<body>

</body>
</html>

このようにキレイにコメントがなくなりました。

(実際に使ってないので間違えてるかもしれないけど)find_in_filesコマンドの正規表現による置換と比較してファイルを指定する必要がない分、ラクかもしれないけど置換パターンを定義ファイルに書かなきゃならないのは面倒かも。

RegReplace プラグインはキーマクロ中の文字列検索の代替としてはやや難ありかな、と感じました。

うー、まだEmacsが手放せなさそうです。