netrw.vimでディレクトリをツリー表示する

Posted by Hiraku on 2011-11-10
netrw0.gif

開発にどんなツールを使うかは人それぞれですが、私はvimを使っています。

PHPフレームワークなどを使っていると、編集するファイルも増えますし、ディレクトリ構造も複雑になります。ちまちまとvim application/modules/user(略)Controller.phpなんてタイプするのはとても億劫だと思います。

なのでIDEみたいにファイラーが付属していたらなあと思って、プラグインを探したり、project.vimとかを使ったりしていたんですが、そもそも標準で付属しているnetrw.vimというプラグインのファイラー機能さえあれば事足りるなあと思って、最近はずっとそればかり使っています。

netrw.vimとは

「Network oriented reading, writing, and browsing」とあるように、ネットワーク越しにファイルを編集/閲覧することができるプラグインです。vimに標準で付属していますので、改めてインストールする必要はありません。

ファイラー機能はメインの機能ではないのかも知れませんが、地味に高機能です。vimでディレクトリを開こうとすると、ファイルがリストされると思いますが、これを実現しているのがnetrw.vimです。

標準状態だとこんな感じになるかな
netrw1.gif

ディレクトリを開いた状態でiを押すたびに表示が切り替わります。このうちのツリー表示がなかなか便利。カーソル移動はvim標準のhjklで、ディレクトリの上にカーソルを合わせてEnterを押すと、ディレクトリの中身が展開表示されます。もう一度Enterを押すと展開が閉じます。

netrw2.gif

ディレクトリの場合は開いたり閉じたりですが、ファイルにカーソルを合わせている場合は、押したキーによってそれぞれこんな挙動をします。詳細はヘルプを見てください。

t
ファイルを新しいタブで開く
Enter
今netrw.vimで開いているバッファの上にファイルを開く(netrw.vimの画面は消え去る)
o
上下に画面分割してファイルを開く
v
左右に画面分割してファイルを開く

個人的にはディレクトリを常にタブで開いておいて、tで新しいタブにファイルを開いては編集する、という形で作業を進めています。

netrw.vimのカスタマイズ

少しだけカスタマイズすると更に便利になります。

  • ツリー表示が便利すぎるので常にツリー表示にしたい
  • "CVS"という名前のディレクトリは表示したくない
  • oやvで開く位置を入れ替えたい
これらの要望は.vimrcにこんな感じの設定を加えておくと適用されます。
" netrwは常にtree view
let g:netrw_liststyle = 3
" CVSと.で始まるファイルは表示しない
let g:netrw_list_hide = 'CVS,\(^\|\s\s\)\zs\.\S\+'
" 'v'でファイルを開くときは右側に開く。(デフォルトが左側なので入れ替え)
let g:netrw_altv = 1
" 'o'でファイルを開くときは下側に開く。(デフォルトが上側なので入れ替え)
let g:netrw_alto = 1

これだけ設定しておけば、

  • 開発ディレクトリに移動する(aliasを作ってコマンド一発で飛べるようにしておく)
  • vim .をタイプする
  • tでタブで開いては編集

という感じになります。


開発環境というのは際限がないので、これだけでベストの開発環境かと問われれば「うーん」となるんですが、個人的にはここまででそこそこ満足してます。

symfony1系の開発の際は、symfony.vimも併用すると更によくなりますね。

ちなみに、ツリー表示やタブで開く機能はnetrw.vimの割と新しいバージョンにしかない機能です。vimに同梱されているnetrw.vimが古い場合は使えないかもなので、その場合はプラグインだけ公式サイトから落としてきて、新たにインストールすればいいと思います。

Vimテクニックバイブル 〜作業効率をカイゼンする150の技 [単行本(ソフトカバー)] / Vimサポーターズ (著); 技術評論社 (刊)

keyword: vim

etcの最新記事