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

vim-airline にカーソル下の文字コードを表示する

$
0
0

vim-airlineが流行ってるみたいですね。
流れに乗って私も vim-powerlineから乗り換えてみました。

vim-powerlineでは文字コードの表示が可能だったので vim-airlineでもやってみました。
(結構便利なので個人的には必須)

vim-airline 2.png

実装

文字コードを取得する部分は 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()}'

見た目が気に入らない方は適当に弄って下さい。

デフォルトの設定を流用してみる

fileencodingfiileformatの表示がデフォルトと同じで良いなら以下のようにしても良いかも

ただし 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 の設定は以下のような感じになってます。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



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