Feb 17, 2011
秀丸エディタユーザがgeditを使う時に不満に感じた「正規表現で検索したり一括置換したりしたい」を解決する
自宅ではWindows Vistaで秀丸エディタを使っている僕は会社では主にUbuntuを使用していますが、viでもemacsでもなくgeditがメインのテキストエディタだったりします。という事を言うとワリと失笑されがちですが、geditそんなにわるくないよ!! むしろメモ帳(notepad)よりはずっといいよ!! タブの挙動とかはキモイけど!! シンタックスハイライトもあんまり賢くないけど!! あとShift_JISで「\」(半角バックスラッシュ)を含んだファイルを開くと勝手にUnicodeの円マークに変換しちゃうせいでそのまま保存するとJavaScriptの正規表現とかがぶっ壊れがちだけど!!
そんなgeditに対する不満の1つに、検索で正規表現を使えない、特に、正規表現による一括置換ができないという点が挙げられます。改行やタブをコピペして検索したり置換したりしようとした時には勝手に「\n」とか「\t」とかエスケープされて表示されますが、こういうのを自分で入力しても期待通りには認識されません。
んでまあずっと諦めていたのですが、改めて探してみたら、geditで正規表現検索できるようにするプラグインというのが世の中にはあったのですね。
- geditで正規表現を使う: The Spirit of Ubuntu
- geditで正規表現を使う - omnioo lab.
- Half Hour Hacks: gedit Regular Expression Plugin
以下、Ubuntu 10.10での導入手順。
- Half Hour Hacks: gedit Regular Expression Pluginから、regex_replace.tar.gz というファイルをダウンロードする。
- ファイルを展開する。
- regex_replace.gedit-plugin というファイルと regex_replace というフォルダが展開されるので、これを /home/username/.gnome2/gedit/plugins/ に移動する。(/home/username/.gnome2/gedit/plugins/regex_replace.gedit-plugin という感じの位置になる。この位置にディレクトリが無い場合は自分で作る。)
- geditを起動して、「編集」→「設定」→「プラグイン」で「Regex Search and Replace」にチェックを入れる。
- geditを再起動して、「検索」メニューで「Regular expression...」を選択すると、正規表現検索・置換用のダイアログが開かれる。
置換先の入力欄の上で何か操作しないと、「Replace All」などのボタンが有効化されません。置換先の文字列を空にしたまま置換しようとすると(=マッチ箇所を削除する操作をしようとすると)「すべて置換」ボタンが有効にならないという風な事が起こるので、何か入力してそれをまた消す、という操作を必要に応じてやらなくてはなりません。という風に若干作りが甘いと思われる部分はあるものの、これでやっとgeditだけでもそれなりの事ができるようになったという事の方が嬉しくて、もうこれだけで満足してしまいがちな僕がいます。
あと「grepもできたらいいなあ」「でもってgrepでヒットしたファイルを一括置換したいなあ」とかも思って検索してみたら、grepだけならプラグインですぐにできる事も分かりました。
こちらで紹介されているGedit File Search PluginをRegex Search and Replaceと同じようにしてインストールして「編集」→「設定」→「プラグイン」で「File Search」にチェックを入れてgeditを再起動すると、「検索」メニューの「Find in files...」でgrepできるようになります。ヒット箇所をクリックするとその位置までスクロールした状態でファイルを開いてくれるので良いですね。さすがに「grepで置換」まではできませんが……
wikieditish message: Ready to edit this entry.