Vim - 現在のファイルパスを表示する

ステータスラインに表示していたけど、コマンドラインへ表示する方法に変えたというお話。

ステータスラインに表示する

私のステータスラインの設定は次のようになっています。

set statusline=%F%m%r%h%w%=\ %{fugitive#statusline()}\ [%{&ff}:%{&fileencoding}]\ [%Y]\ [%04l,%04v]\ [%l/%L]\ %{strftime(\"%Y/%m/%d\ %H:%M:%S\")}

:help statusline を見れば分かりますが、%F でフルパスを表示しています。

statusline

ただこれだとウィンドウ分割した際に収まりきらなくて残念になります。

statusline

画像ではヘッダーにフルパス出ていますが、これはスクショ取るためにフルスクリーンを解除したためです。
普段はフルスクリーンで使っているので、ヘッダーは表示されません。

コマンドラインに表示する

そこでコマンドラインに表示するようにしてみました。
まず、<C-g> で現在のファイル名が表示できます。
:help CTRL-G にヘルプがあります。

これならコマンドラインに表示されるので、ウィンドウサイズに影響されません。

statusline

1<C-g> でフルパスを、2<C-g> でバッファ番号まで表示します。
私はフルパスを表示させたいので、以下のようにマッピングしています。

nnoremap <C-g> 1<C-g>

加えて次の設定を加えることで、ウィンドウを移動した際にも表示されるようにしました。

augroup EchoFilePath
  autocmd WinEnter * execute "normal! 1\<C-g>"
augroup END

コマンドを叩いたりスクロールすると消えてしまいますが、今のところそこまで困らないかなと感じています。