こんにちは、hachi8833です。Sublime Text 2の強力な機能の一つに「同時編集」があります。たとえば、文字列を選択してから⌘-Dを押すと、以降に出現する同じ文字列が次々に同時に選択され、それらを同時に編集できるというものです (Sublime Textの動作についてはこちらの動画を見るのが一番早いと思います)。
一度使ったらもうやめられないこの機能をRubyMineでも使えればと常日頃から思っていたのですが、これにかなり近い動作をするSyncEdit 2というプラグインを見つけました。このプラグインはRubyMineにとどまらず、WebStormなどJetBrainsの他のIDEでも使用できるようです。
導入方法および使用法は簡単です。以下はRubyMine 6とMac OS X Maverics環境を前提にしています。
インストール方法
- SyncEdit 2のリンクからSyncEdit2をダウンロードします。
- RubyMineを起動し、Preference (⌘+,)のPlugins
- Preferenceを閉じ、アラートに従ってRubyMineを再起動します。
で [Install plugin from disk] をクリックし、ダウンロードしたプラグインを選択します。
使用方法
<li>Ctrl-SでSyncEditモードに入ります。選択範囲の反転が解除され、周りが枠で囲まれています。</li>
<li>この状態で単語を編集します。すると、同じ単語が同時に編集されます。大文字小文字は区別されますので、Bookを編集してもbookには影響しません。</li>
<li>Escを押すとSyncEditモードは終了します。</li>
Sublime Textと異なるのは、⌘+Dでの単語選択がないことです。その代りに単語は大文字小文字の区別付きで自動認識されます。
SyncEdit 2による編集は基本的に単語単位となります。そのため、以下のような特徴があります。
- 単語はスペースと記号で区切りを認識しているようです。このため、隣接する記号までは編集できません。これを回避するには、Preferenceで [Select whole words only]をオフにします。
- 上のオプションをオフにしても、Sublime Textのように同時に改行を追加するようなことはできません。
- 日本語も編集できます。上のオプションをオフにしておけば、日本語の部分マッチもかなり認識してくれます。日本語はいきなり後ろから削除すると同じ語が認識されないことがあるので、編集したい語をいったん選択してから削除すると認識されやすいようです。
ただし、このオプションをオフにすると、bookを後ろから削除してboにした場合に、booksまで削除されてbosになってしまいます。
若干癖はありますが、RubyMineでSublime Textのあの操作ができるようになるのは感激です。JetBrainsが公式に対応してくれればベストなのですが。
追伸: 自分は使っていませんが、vimにはvim multiple cursor、emacsにはmultiple-cursorという追加機能があるんですね。Sublime Textのマルチ編集機能のインパクトの大きさがうかがえます。