netrwでよく使うディレクトリをブックマークする(mb/gb/qb)
プロジェクトの階層が深く、毎回同じディレクトリまで潜るのが手間でした。netrwにはブラウザのブックマークに近い機能があり、よく使う場所への移動を1コマンドで済ませられます。
ブックマークはnetrwの機能です。Neovim 0.13でnvim .から開く一覧には用意されていません。新しい一覧が持つのは「開く・上へ・読み直す」の3つだけです。Vim側は変わりません。Neovimで0.13以降を使っていて、この記事の操作が見当たらない場合は:Exploreを打つと従来どおりnetrwが開きます。詳しくはNeovim 0.13でnetrwが標準の一覧から外れる件にまとめています。
目次(9項目)
ブックマークの基本操作
| キー | 動作 |
|---|---|
| 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で番号を確認してから移動する癖もセットで身につき、目的の場所を間違えることもほぼなくなり、体感でも移動にかかる時間が明らかに短くなりました。
ブックマークの保存先を変える
.netrwbook の置き場所は netrw_home で決まります。指定していない場合は runtimepath の先頭のディレクトリ、つまり多くの環境では設定ディレクトリの中に作られます。
let g:netrw_home = expand('~/.local/share/nvim')
:echo g:netrw_home
設定ディレクトリをgitで管理している人は、ここを分けておくとブックマークや履歴が差分に出てこなくなります。逆に、複数のマシンで同じブックマークを使いたいなら、同期しているディレクトリを指定するという使い方もできます。
ブックマークが消えたとき
ブックマークはVimの終了時に書き出されます。強制終了したり、複数のVimを同時に開いて別々にブックマークを足したりすると、あとから終了したほうの内容で上書きされます。
確実に残したいときは、追加した直後に :NetrwBookHistSave を実行すると、その場でファイルに書き出されます。読み直しは :NetrwBookHistRead です。複数のVimを開いて作業する人は、この2つを覚えておくと取りこぼしません。
ブックマークを使わずに済ませる
移動先が数か所に決まっているなら、そもそも :cd の別名を作ってしまうほうが速いこともあります。Exコマンドとして定義しておけば、netrwを開かずに移動できます。
command! Cwork cd ~/work/project/src
command! Cconf cd ~/.config/nvim
ブックマークが向くのは、その時々で変わる作業ディレクトリを一時的に覚えておきたい場面です。恒久的によく行く場所は設定ファイルに書いてしまい、ブックマークは今週の作業用、という使い分けにすると管理する数が減ります。netrwの開き方そのものは起動方法の記事にまとめています。
まとめ
netrwのブックマークは、深い階層への移動を1コマンドに圧縮できる地味だが効果の大きい機能です。.netrwbookに永続化されるので、一度登録すれば次回起動時も使えます。プロジェクトをまたいで使う場合は、g:netrw_homeを切り替えてプロジェクトごとに保存先を分けておくのも1つの手です。なおgbはカウントを付けて{cnt}gbと打つと、登録した何番目のブックマークへでも直接飛べます。飛んだ先では一覧の表示形式を切り替えたり、分割やタブでファイルを開いたりと、通常のnetrwと同じ操作がそのまま使えます。保存先の.netrwbookはruntimepathの先頭のディレクトリに置かれ、中身はソート済みで並びます。