statusline
http://d.hatena.ne.jp/janus_wel/20091203/1259837870 の他にもいろいろ試行錯誤をして今おれの vim の 'statusline' はこんな感じになっている。
" statusline {{{2 " %3(%m%) : modified flag (bracketed, fixed) " %< : where to truncate line " %3n : buffer number (3 digit) " %t : filename (only leaf) " %y : filetype (bracketed) " %{&fenc!=#""?&fenc:&enc} : fileencoding " %{&ff} : fileformat " %r : read only flag (bracketed) " %= : spliter left between right " %{tabpagenr()} : current tabnumber " %{tabpagenr("$")} : tabpage count " %v : virtual column " %l : line number " %L : lines count " %{strtrans(matchstr(getline("."),".",col(".")-1))} : chars under the cursor " 0x%04B : hexadecimal octets " %4P : percentage through file of displayed window let s:statusline = [ \ '%3(%m%) %<%3n %t %y', \ '[%{&fenc!=#""?&fenc:&enc}:%{&ff}]', \ '%r', \ '%=', \ '[%{tabpagenr()}/%{tabpagenr("$")}]', \ '[%v:%l/%L]', \ '[%2(%{strtrans(matchstr(getline("."),".",col(".")-1))}%)', \ ' 0x%04B]', \ '[%4P]', \ ] let &statusline = join(s:statusline, '') unlet s:statusline
以下変遷。幅固定とちょんぎる位置の指定を併用することによって常に modified flag を表示することが出来ることに気付いたり不可視文字の可視化に strtrans() 関数が使えるのに気付いたときはちょっと感動した。
- http://github.com/januswel/dotfiles/commit/e49d4b06c54438d1d3d27dec8bf0f0110fe06826
- http://github.com/januswel/dotfiles/commit/9029d5834e0bc34965f4bbbcb0b56712c7044cb1
- http://github.com/januswel/dotfiles/commit/dc2c49a3156ff413199abd8adf4d71b80a712a7e
- http://github.com/januswel/dotfiles/commit/5b54eb378e484e25210841e4b7f59271d7cf9716