PhpStormでVimキーマップ

 ツイート 9  シェア 6  Hatena 9

vim-logo

PhpStorm(WebStorm) のキーマップを Vim っぽくするプラグイン IdeaVim プラグインを紹介します。

PhpStorm はとても強力な IDE ですが、Vim 好きの私は コーディングしていると Vim が恋しくなります。矢印キーが遠い、カーソルを横方向への移動させる手段が乏しい・・・。MacBook Air で開発しているとき特にそう感じていました。そんな私を救ってくれたのが、IdeaVIMプラグインです。

IdeaVimプラグインをインストールすると、PhpStormでVimキーマップを利用することができます。IdeaVIMプラグインにより提供されるVimの機能は、本家Vimと比べて足りない所もありますが、それなりにVimっぽく動作します。

動作確認環境

  • PhpStorm5.0.2
  • IdeaVIMプラグイン0.23.93

目次

  1. IdeaVIMプラグインでサポートされている機能
  2. IdeaVIMプラグインでサポートされていない機能
  3. VimとPhpStormの使い分け
  4. IdeaVIMプラグインのインストール方法
  5. IdeaVIMプラグインインストール後のQ&A
  6. プラグインにより変更されるキーマップ
  7. 使いやすくするために変更したキーマップ

IdeaVIMプラグインでサポートされている機能

IdeaVIMプラグインでサポートされているVimの機能です。

各種モード、モーションに加え、マークにレジスタ、テキストオブジェクトもサポートされています。

  • 各種モード(ノーマル、挿入、更新、ビジュアル、コマンドライン)
  • モーションキー
  • ex コマンドいくつか
  • set オプションいくつか
  • テキストオブジェクトいくつか
  • マーク
  • レジスタ
  • マクロ
  • 正規表現

IdeaVIMプラグインでサポートされていない機能

残念、サポートされていない機能です。

他にもあるかもしれませんが、使用頻度が低かったり、知らない機能は試していません。

  • .vimrcのような設定ファイル
  • モード別キーマップの変更
  • window分割やタブ関連のコマンド :sp, :vsp, :tabm など
  • window分割関連のキーマップ control + w など

VimとPhpStormの使い分け

PHPアプリは基本的にPhpStormで書くようになりましたが、引き続きVimも使用しています。

Vimの利用シーンは下記の通りです。

  • PHPDocコメントを書かないプロジェクトのとき
  • ターミナルから簡単な修正をするとき
  • 複数のウィンドウを分割させて作業したいとき
  • コピペを多用する作業をしたいとき
  • 一時的な作業を行うとき
  • PhpStormを使えないプロジェクトのとき

PHPDocコメントを書かないプロジェクトの場合は、自作クラスの入力補完がほとんど効かず、定義へのジャンプ機能も効かず、IDEの恩恵が半減するケースが多いです。現場によっては改善が難しいこともあるので、その場合はtagsファイルを作ってVimで開発をします。

また、ウィンドウ分割やタブの使い勝手はVimの方が上です。状況に応じて使い分けます。

IdeaVIMプラグインのインストール方法

PhpStormにIdeaVIMプラグインをインストールする方法です。

IDE Settings > Plugins

  1. Browse repositories ボタンをクリック。
  2. 右上の検索入力ボックスに vim と入力。
  3. IdeaVIM Editor が表示されたら、右クリックして Download and Install を選択。
    phpstorm-vim1
  4. インストール確認ダイアログが表示されたら OK ボタンをクリック。
  5. Close ボタンをクリックして、Browse repositories ダイアログを閉じる。
  6. Settingsダイアログの裏側にあるPhpStormのツールバーに、ダウンロードの進行状況が表示される。プラグインのダウンロードが完了するまで待つ。
  7. プラグインのダウンロードが完了すると Apply ボタンがクリック可能になる。
  8. Apply ボタンをクリック。
  9. 再起動を促すダイアログが表示されるので、Restart ボタンをクリックしてPhpStormを再起動。
  10. IdeaVIMプラグインのキーマップのベースの選択を求められるので、任意のキーマップを選択。注意すべき点は、すでにカスタマイズ済みのキーマップを選択しないこと。キーマップが重複して動作がおかしくなることがあります。オススメは、WindowsかLinuxであればDefalut、MacであればMac OS Xです。
    phpstorm-vim2
  11. 再起動の後、Vimキーマップが自動で有効となります。

IdeaVIMプラグインインストール後のQ&A

IdeaVIMプラグインを無効にしたい場合

Main menu > Tools > VIM Emulator のチェックをはずします。

VIMプラグインのキーマップのベースを変更したい場合

Main menu > Tools > Reconfigure VIM Keymap を選択します。カスタマイズしたVim Keymapを初期化したい場合もこちらを選択します。

色々おかしくなってしまった場合

VIMプラグインの動作がおかしくなってしまった場合は、プラグインを再インストールしましょう。PhpStormのメジャーバージョンが上がった時におかしくなることが多いです。

プラグインの再インストールでも解決しない場合は、PhpStormを再インストールします。キャッシュやプラグインの情報がホームディレクトリの .WebIde50 などに保存されていますので、そのディレクトリも削除します。Macの場合はホームディレクトリではなく ~/Library/Preferences/WebIde50 にあります。

プラグインにより変更されるキーマップ

IdeaVIMプラグインのベースに選択したキーマップがいくつか変更されます。特によく利用するものを抜粋しました。下記に載せていないものは、ベースに選択したキーマップと同じことが多いですが、詳細はご自身の Keymap をご確認ください。

K
ドキュメント参照
Quick Documentation
control + shift + p
引数のドキュメントを表示
Parameter Info
alt + shift + n
ファイル名でファイルを検索
Navigate Class
gd
定義に移動
Declaration
control + shift + u
親クラスのメソッドに移動
Super Method
control + shift + o
オーバーライド可能なメソッドを表示して展開
Override Methods
control + shift + i
実装可能なインターフェースのメソッドを表示して展開
Implement Methods
control + space
入力補完
Basic Complete
control + alt + space
クラス名保管
Class Name Complete
control + j
Live Template(スニペット)表示
Insert Live Template

ベースのキーマップを確認の際は、こちらも併せてどうぞ。

使いやすくするために変更したキーマップ

より使いやすくするために、下記のマップを変更しています。競合するものはremoveします。

※ WindowsとLinuxでは command キーを Alt に読み替えてください。

control + [
Escape
command + w
Select Word at Caret
単語選択→囲み選択→行選択→ブロック選択
(連続押下で選択範囲が広がる)
テキストオブジェクトのサポートが少し弱いので、このマップで補います。ビジュアルモードと併用します。
command + shift + w
Unselect Word at Caret
command + w の逆
control + w , v
Split Vertically
2ストロークキーです。画面を縦に分割します。:vsplit コマンドが動かないので、代わりに割り当てています。
control + w , s
Split Horizontally
2ストロークキーです。画面を水平に分割します。:split コマンドが動かないので、代わりに割り当てています。
control + w , l
Goto Next Splitter
2ストロークキーです。画面分割している場合、次の画面に移動します。
control + w , h
Goto Previous Splitter
2ストロークキーです。画面分割している場合、前の画面に移動します。
control + n
control + w , c
Unsplit
2ストロークキーです。画面分割を解除します。
control + n
Down
カーソルを下に移動
入力補完候補をcontrol + n でカーソル移動したかったので設定しました。
control + p
Up
カーソルを上に移動
入力補完候補をcontrol + p でカーソル移動したかったので設定しました。
control + f
Right
カーソルを右に移動
control + b
Left
カーソルを左に移動
control + e
Move Caret to Line End
カーソルを行末に移動
control + a
Move Caret to Line Start
カーソルを行末に移動
 ツイート 9  シェア 6  Hatena 9