PHPStormでIdeaVimを使って編集作業をしているが、作業スタイルとしてどんどん関連ファイルをタブで開いていくスタイルなので、気づくとタブの量がすごいことになってしまう。
そういう時は、編集中以外のタブを一気に閉じたいというわけで、調べてみた。
なお、IdeaVimにはtabonlyコマンドは実装されていない。
方法
結果的には、下記の1行を.ideavimrcに追記すれば、任意のショートカットで:tabonlyと同じ動きをIdeaVimでも実現できる。
1 | noremap \r :action CloseAllEditorsButActive<CR> |
※ここでは\rで、編集中以外のタブを閉じるActionを実行している。
メモ
actionとは
IdeavimではPHPStorm、というかIntellijを操作するためのactionが定義されているので、ユーザはactionを任意のショートカットに関連付けることで便利に拡張できるようになっている。actionのリストは:actionlist [pattern]で確認&検索可能。
actionは、:action {name}で直接実行することもできるが、アクション名を覚えるのは大変なのでショートカットを割り当てるのが現実的だと思う。
カスタムコマンドには出来ないか?
vimっぽくするには、:tabonlyコマンドに上記actionを紐付けるのが良さそうだが、Ideavimではカスタムコマンドは設定出来ないようなので、今回は諦めた。
その他の方法
Intellijのショートカットにclose othersという項目があるので、それにショートカットを割り当てることでも実現できる。わざわざIdeaVimを経由してIDEの機能を使わなくても実現は可能である。