netrwでよく使うディレクトリをブックマークする(mb/gb/qb)
プロジェクトの階層が深く、毎回同じディレクトリまで潜るのが手間でした。netrwにはブラウザのブックマークに近い機能があり、よく使う場所への移動を1コマンドで済ませられます。
ブックマークの基本操作
| キー | 動作 |
|---|---|
| mb | 現在のディレクトリをブックマークに追加 |
| gb | 最初のブックマークへ移動 |
| qb | ブックマークと移動履歴の一覧を表示 |
ブックマークが複数あるときは、qbで表示される番号を使って{数字}gbのように指定すれば任意のブックマークへ移動できます。
コマンドで直接ブックマークする
:NetrwMB {対象のファイルまたはディレクトリ}
:NetrwMBはnetrwを起動していない状態でも実行できます。引数を省略したときにブックマークされる対象は、状況によって変わります。
| 状況 | ブックマークされる対象 |
|---|---|
| netrwバッファの外 | 今開いているファイル |
| netrwバッファの中 | カーソル位置のファイル/ディレクトリ |
!を付けるとブックマークから削除できます。
:NetrwMB! {対象のファイルまたはディレクトリ}
移動履歴も一緒に管理される
qbで表示されるのはブックマークだけでなく、netrwで移動してきたディレクトリの履歴も含まれます。明示的にブックマークしていなくても、最近訪れた場所であれば一覧から番号を指定して戻れることがあります。とはいえ履歴は溜まっていくと見分けがつきにくくなるので、頻繁に使う場所は面倒でもmbで明示的にブックマークしておいたほうが、あとから探す手間が省けます。
ブックマークの保存先
ブックマークと移動履歴は.netrwbookというファイルに保存されます。デフォルトではruntimepathの最初のディレクトリ配下に置かれ、g:netrw_homeで保存先を変更できます。Vimを再起動してもブックマークが引き継がれるのは、このファイルに永続化されているためです。
:NetrwMBを使えばnetrwを開かずに登録できるので、作業を中断せずに済みます。
深いモノレポ構成のプロジェクトで、目的のパッケージのディレクトリまで毎回cdを打っていましたが、ブックマークに登録してからはgbだけで行き来できるようになりました。プロジェクトを切り替えるたびに再登録が必要な点だけは少し面倒ですが、それでも毎回パスを打つよりはるかに速く感じます。複数のブックマークを使い分けるようになってからは、qbで番号を確認してから移動する癖もセットで身につき、目的の場所を間違えることもほぼなくなり、体感でも移動にかかる時間が明らかに短くなりました。
まとめ
netrwのブックマークは、深い階層への移動を1コマンドに圧縮できる地味だが効果の大きい機能です。.netrwbookに永続化されるので、一度登録すれば次回起動時も使えます。プロジェクトをまたいで使う場合は、g:netrw_homeを切り替えてプロジェクトごとに保存先を分けておくのも1つの手です。なおgbはカウントを付けて{cnt}gbと打つと、登録した何番目のブックマークへでも直接飛べます。飛んだ先では一覧の表示形式を切り替えたり、分割やタブでファイルを開いたりと、通常のnetrwと同じ操作がそのまま使えます。保存先の.netrwbookはruntimepathの先頭のディレクトリに置かれ、中身はソート済みで並びます。