はじめに
Vimのタブのところに、どこのディレクトリのファイルなのかのヒントが欲しいときがあります。そして、それはできるだけシンプルなものがいいです。たとえば、ディレクトリ名の頭文字を含むものです。
私はlightline.vimを使っているので、それに合わせる必要がありました。
今回はその設定を紹介します。
設定
設定は下記になります:
letg:lightline = {
\ 'colorscheme': 'solarized',
\ 'active': {
\ 'left': [ [ 'mode','paste' ],
\ [ 'fugitive','filename' ] ]
\ },
\ 'component_function': {
\ 'readonly': 'LightlineReadonly',
\ 'modified': 'LightlineModified',
\ 'fugitive': 'LightlineFugitive',
\ 'filename': 'LightlineFilename'
\ },
\ 'separator': { 'left': '','right': '' },
\ 'subseparator': { 'left': '|','right': '|' }
\ }
function! LightlineModified()if&filetype=='help'return''elseif&modifiedreturn'+'elseif&modifiablereturn''elsereturn'-'endifendfunctionfunction! LightlineReadonly()if&filetype=='help'return''elseif&readonlyreturn'x'elsereturn''endifendfunctionfunction! LightlineFugitive()return exists('*fugitive#head') ? fugitive#head() : ''endfunctionfunction! LightlineFilename()return(''!= LightlineReadonly() ? LightlineReadonly() . ' ' : '') .
\ (''!= expand('%:t') ? expand('%:t') : '[No Name]') .
\ (''!= LightlineModified() ? ' ' . LightlineModified() : '')endfunctionletg:lightline.tab= {
\ 'active': [ 'tabnum','filename','modified' ],
\ 'inactive': [ 'tabnum','filename','modified' ]
\ }
letg:lightline.tab_component_function = {
\ 'filename': 'LightlineTabFilename',
\ 'modified': 'lightline#tab#modified',
\ 'readonly': 'lightline#tab#readonly',
\ 'tabnum': 'lightline#tab#tabnum' }
function! LightlineTabFilename(n) abort
let buflist = tabpagebuflist(a:n)let winnr = tabpagewinnr(a:n)let _ = pathshorten(expand('#'.buflist[winnr -1].':f'))return _ !=# '' ? _ : '[No Name]'endfunction
少し設定の解説
LightlineTabFilename(n)のところ以外はlightline.vimの設定チュートリアルにあるものです。
LightlineTabFilename(n)のアイデアは、ファイル名ではなく相対パスを取得して、その相対パスをpathshortenで変換して、表示させるというものです。
pathshortenを試してみるにはVimを開いて、:echo pathshorten('~/.vim/autoload/myfile.vim')
を試すのがいいと思います。名前の通りパスを短くしてくれます。
気をつけなければいけないところは、tab_component_functionで指定する関数は引数を一つ受け取るというところです。(filenameコンポーネントのときだけかもしれませんが、その関数が受け取る値はカレントタブページの番号です。なので、仮引数をnとせずtabnrにしたほうがわかりやすいかもしれません。)
動かすためには、いくつかのプラグインをインストールするか、不要なところを削る必要があります。どちらでもお好みのほうを試していただければと思います。