Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

lightline.vimのtablineを設定してみた

$
0
0

はじめに

Vimのタブのところに、どこのディレクトリのファイルなのかのヒントが欲しいときがあります。そして、それはできるだけシンプルなものがいいです。たとえば、ディレクトリ名の頭文字を含むものです。

スクリーンショット 2017-02-25 23.07.29.png

私は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にしたほうがわかりやすいかもしれません。)

動かすためには、いくつかのプラグインをインストールするか、不要なところを削る必要があります。どちらでもお好みのほうを試していただければと思います。

参考URL


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>