この記事はVim 駅伝の 2026-5-13 の記事です。 Vim 駅伝は常に参加者を募集しています。詳しくはこちらのページをご覧ください。
元々のステータスラインの設定が以下だとして、
set laststatus=2
set statusline=%<%f%h%m%r%y%=[%{&fenc!=''?&fenc:&enc}][%{&ff}][%l,%c%V]\ [%P]
文字コードの左隣にカーソル下の文字コードを表示するには、以下のように
statusline を変更( %{CharCodeLabel()}
を追加)したうえで、
set statusline=%<%f%h%m%r%y%=[%{CharCodeLabel()}][%{&fenc!=''?&fenc:&enc}][%{&ff}][%l,%c%V]\ [%P]
以下のような関数を定義すれば OK.
" カーソル下の文字の Unicode コードポイントを表示する関数
function! CharCodeLabel() abort
" カーソル下の文字を取得
let l:char = matchstr(getline('.'), '\%' . col('.') . 'c.')
" 文字がない場合は空文字を返す
if empty(l:char)
return ''
endif
" 文字の Unicode コードポイントを取得
let l:nr = char2nr(l:char)
" コードポイントを U+XXXX 形式で返す
return printf('U+%04X', l:nr)
endfunction
これで、 a の上にカーソルがあるときは
U+0061 と表示されるようになる。
以上。