【Vim】Powerline に文字コード表示機能をつける


前回導入した Powerline に対する一つの不満、カーソル下の文字の文字コードを表示する機能を実装してみた。イメージはこんな感じ。

2012-01-28_143818.png

ステータスラインの真ん中に表示されている【’表’ 8868】ってのがそれね。使いたい方は下記のリンクから ZIP でダウンロードするか、git コマンドを使ってください。

delphinus35/vim-powerline at charcode – GitHub
https://github.com/delphinus35/vim-powerline/tree/charcode

$ git clone http://github.com/delphinus35/vim-powerline
$ git checkout -b charcode
$ git pull origin charcode

文字コードを得る部分は次のように書いてるんだけど、こんなんでいいんだろうか。もっと簡単な方法がある?

function! Powerline#Functions#GetCharCode()
    let tmp = @a
    redir @a
    exec ':silent! ascii'
    redir END
    if -1 < match(@a, 'NUL')
        let @a = tmp
        return 'NUL'
    endif
    let info = split(@a, ',\s\+')
    let @a = tmp
    let char = matchstr(info[0], '<\zs.*\ze>')
    let hex = matchstr(info[1], '[0-9a-f]*$')
    return '''' . char . ''' ' . hex
endfunction

git の勉強のためにも、作者にプルリクエストまでしてみた。そもそも Vim プラグインをいじるのが初めてに近いのでガクブルだけど何事も経験だ。

git での作業に使った参考リンクを置いておく。

GitHub 上のリポジトリのフォーク、プッシュ、プルリクエスト | 日本Symfonyユーザー会
http://www.symfony.gr.jp/git/git-fork-and-push
GitHubへpull requestする際のベストプラクティス – hnwの日記
http://d.hatena.ne.jp/hnw/20110528

(追記) うまく有効にならないときには……

すでに Powerline を使っていた場合は、以前の設定が残っていて文字コードが表示されません。

$ rm /tmp/powerline.cache

のようにして手動で削除するか、最新版では :PowerlineClearCache というコマンドを使ってキャッシュを削除してください。(@unagixさん、thx!)

(さらに追記) なんで %B 使わないの?馬鹿なの?氏ぬの?

と、作者様に言われちゃいました。確かにそうだ。なぜか、関数ですべてこなすことに躍起になって、statusline オプションの変数を利用することすっかり忘れてましたorz 「でもまあ、カーソル下の文字と、文字コードを一緒に取得するならこの方法がベストかな。今度のリリースの時参考にするよ」といってくださいましたので、少しは救われました ;)

→本家がアップデートされました

【Vim】Powerline 本家に文字コード表示機能がマージされました – blog.remora.cx
http://blog.remora.cx/2012/01/vim-powerline-updated.html

コメントを残す