意外と知らない Vim でできること


概要

自分はターミナルで Vim を使って開発するのが好きなのだが、 Sublime Text でよくね?とか VSCode でよくね?みたいなことを言われて、話をすると、

  • タグジャンプができたり
  • ファイルをツリーで表示できたり
  • ファイル検索できたり
  • 補完できたり

するから良いと言われ、それって標準の Vim でもできるのでは、と思って調べてみたら意外にできると知ったので記事にしてみました。

他のエディタに Vim プラグインを乗っけるというのもありだとは思いますが、

  • エディタアップデートの際にプラグインアップデートしなきゃだったり
  • 結局サーバーに入る時にそういったソフトは使えなかったり
  • カスタマイズしにくかったり

するので、標準 Vim でやっています。

タグジャンプ(定義元に移動)

コードを書いてて、定義元を表示したいことはしばしばある。これは Vim 標準の ctags を使うことで解決できる。ctags はソースからタグファイルを生成して、vim からそのタグファイルを読み込めるようにすることで、定義元を特定してタグジャンプを可能にする。

mac だと homebrew で最新にした方が良さそう。

$ brew install ctags

ctags でタグファイルを作るのは以下のように ctags コマンドをたたく

$ ctags --languages=RUBY -R .

tags ファイルが生成されるので以下の操作で定義元にジャンプできる

操作方法 動作
<C-]> 一番目の候補にジャンプ
g<C-]> 複数候補を表示 > 選択ジャンプ

ファイルツリー表示

ファイルツリーは、 NERDTree というライブラリが使いやすいのでこれはライブラリで導入。カレントディレクトリ以下のファイル選択が捗る。ライブラリ導入方法は別記事にて: Vim におけるプラグイン管理についてまとめてみた

ファイル検索

標準では vimgrep を使うとファイル検索ができるが、これもライブラリを使ったほうがラク。Unite.vim などを使うと良い。

:Unite file

と叩いて、挿入モードでパターン入力すると、ファイル検索ができ、所望のファイルを開くことができる。

その他のライブラリでは ctrlp.vim とかも良さそう。

自動補完

Vim には標準で挿入モード中に <C-p><C-n> と打つと補完が走る。設定をすれば ctags で生成したファイルや辞書データ(スペルチェックに使う)を候補にすることも可能。

こちらまだ深掘りできてないが、デフォルトの補完は設定がややめんどそうなので、neocomplete.vim などライブラリ導入を検討したほうがラクそう。

ファイル進む、戻る

以下のキーで直前に編集したファイルに戻ったり進んだりできる。

操作方法 動作
<C-i> 進む
<C-o> 戻る

参考: Vim でブラウザのようにファイル間で進む、戻る操作をする方法

まとめ

ライブラリも多用しましたが、標準の Vim で用意された機能をライブラリでより使いやすくされています。これら、ライブラリを使わずに標準機能で頑張ってみるのも良いと思います。その際には 実践Vim に詳しく書かれているので、そちらを参考にされるのが良いと思います。

こちらの記事も書きました > Vim におけるプラグイン管理についてまとめてみた