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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。