statusline が表示されてるのがあまり好きじゃなくて、laststatus=0
でのスッキリして表示が好きなのだけど、たまにファイル名とかディレクトリをさっと確認したいことがあるので statuline を表示したり、しなかったりする。
右側にファイルがあるディレクトリのパスを表示していたのだけど、
- 見たいのはルートやホームディレクトリからのパスじゃなくて、プロジェクトルートからのパス
- 表示するパスが長いと分割したときに切れちゃう
というのが気になったので、ややごういんに .git
フォルダ or Rakefile
ファイルの位置で判定するようにしてみた。やっつけ。
set statusline=\ %Y\ \|\ %t\ %<\ %m\ %r%=%{MyStatusPath()}\ \|\ %3c\ \|\%3p%%\ function! MyStatusPath() if exists('b:my_status_path') return b:my_status_path endif let path = expand("%:p:h") let gpath = finddir('.git', path . ';.;') if gpath == '' let gpath = findfile('Rakefile', path . ';') endif if gpath == '' let b:my_status_path = fnamemodify(path, ':~:h') return b:my_status_path endif if gpath == '.git' || gpath == 'Rakefile' let b:my_status_path = fnamemodify(path, ':t') else let gpath = fnamemodify(gpath, ':h:h') . '/' let b:my_status_path = substitute(path, gpath, '', '') endif return b:my_status_path endfunction