vim-airlineが流行ってるみたいですね。
流れに乗って私も vim-powerlineから乗り換えてみました。
vim-powerlineでは文字コードの表示が可能だったので vim-airlineでもやってみました。
(結構便利なので個人的には必須)
実装
文字コードを取得する部分は vim-powerline からパクry…流用しました。
以下のコードを .vimrc に書けば画像のように表示されます。
" https://github.com/Lokaltog/vim-powerline/blob/develop/autoload/Powerline/Functions.vimfunction! GetCharCode()" Get the output of :asciiredir=>asciisilent!asciiredir END
ifmatch(ascii,'NUL')!=-1return'NUL'endif" Zero pad hex valueslet nrformat ='0x%02x'letencoding=(&fenc=='' ? &enc : &fenc)ifencoding=='utf-8'" Zero pad with 4 zeroes in unicode fileslet nrformat ='0x%04x'endif" Get the character and the numeric value from the return value of :ascii" This matches the two first pieces of the return value, e.g." "<F> 70" => char: 'F', nr: '70'let [str, char, nr; rest] = matchlist(ascii,'\v\<(.{-1,})\>\s*([0-9]+)')" Format the numeric valuelet nr = printf(nrformat, nr)return"'". char ."' ". nr
endfunctionfunction! GetEncoding()letfenc= strlen(&fenc)>0 ? &fenc : ''letff= strlen(&ff)>0 ? &ff : ''returnfenc . '[' . ff . ']'endfunction" Display charcode, fileencoding and fileformat.letg:airline_section_y ='%{GetCharCode()} %{g:airline_right_alt_sep} %{GetEncoding()}'
見た目が気に入らない方は適当に弄って下さい。
デフォルトの設定を流用してみる
fileencoding
や fiileformat
の表示がデフォルトと同じで良いなら以下のようにしても良いかも
ただし NeoBundle
限定です。
let bundle = neobundle#get('vim-airline')function! bundle.hooks.on_source(bundle)letg:airline_section_y ='%{GetCharCode()} %{g:airline_right_alt_sep} ' . g:airline_section_y
call airline#update_statusline()endfunction
unlet bundle
この方法の場合は GetEncoding()
関数は不要になります。
もっと良い方法があれば教えて下さい。
ちなみに私の vim-airline の設定は以下のような感じになってます。