2012/09/25

iedit.elで同じキーワードを同時に編集する

Sublime Text 2のマルチカーソル が便利だなあと思って、似たようなものがあるのか探してみたらあったので紹介します。

といっても、マルチカーソルを実現する機能ではなく、同じキーワードを同時に編集するような機能です。

Install

パッケージからieditをインストールするだけです。

設定は次のようなのをinit.elに書きました。

;;; iedit.el
(require 'iedit)

簡単な使い方

次のような状態でC-;を押すとiedit-modeに入ります。

カーソル位置にあるキーワードがハイライト表示されます。

また、モード行にIedit:とキーワードの出現した回数が表示され、ミニバッファにもメッセージが表示されます。

ここで、ハイライトされた部分を編集する場合は、他のハイライトも同時に編集されるようになります。 試しにアンダースコアを入力してみましょう。

次のように、マッチしたキーワードがすべて変更されました。もう一度C-;を押すとiedit-modeを抜けます。

インクリメンタルサーチからの移行

isearch中にC-;を押すと、そのキーワードでのiedit-modeになります。

layoutのみでのマッチになりました。1行目のlayoutにもマッチしていますね。

マッチ個所への移動

iedit-mode内では、Tab, S-Tabでそれぞれ、次のマッチ個所、前のマッチ個所へカーソル移動します。

また、M-<, M->でそれぞれ、バッファ内最初の個所、最後の個所へカーソル移動します。

ちなみに、モードにもよりますが、C++モードではシンボルの区別をしてくれます。 例えば、次のような場合でも2つだけがマッチします。

状況によっては、isearchより使いやすいかも。

単一マッチだけ編集して、後で全マッチに適用する

ieditで複数行を編集することもできますが、そうなるとわけがわからなくなることがあります。

そういうときは、M-BでModification Bufferingを開始します。

ここからはカーソル下のマッチのみが (とりあえずの) 編集対象になります。

編集が終了したら、もう一度M-BでModification Bufferingを抜けるか、C-;でiedit-mode自体を抜けると、他のマッチへの適用が行われます。

あまり良い例ではありませんが、他のマッチも変更されていることがわかります。

その他の使い方

M-Dでマッチ部を前削除します。シンボル名を完全書き替えするときには便利でしょう。

M-SPCでスペースになります。

M-Nでマッチ部に順番にナンバリングします。使いどころはわかりません…。

おわりに

iedit.elの導入と利用法について簡単に紹介しました。

確かに便利なんですけど、バッファ全体にマッチしてしまうので、状況によってはnarrowing必須だったりします。 なので、自動narrowingするようなelispがあれば便利かなあと思いました。

あと、利用しているとundoが変になることがありますので注意しましょう。

関連リンク

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。