読者です 読者をやめる 読者になる 読者になる

T-code best practices その4 VimでT-code (漢直advent calendar 10日目)

このentryは漢直advent calendarの10日目です。

VimのT-code(TUT-code)入力plugin tcvime

Vimmerの方にもT-code入力用pluginがあるので紹介します。 detonさん作のtcvimeがそうです。

tcvimeのinstall

pathogenとかを使ってもらえればokです。 今のtcvimeはencodingがutf-8になっておりかつT-code用のkeymap tcode.vim も同梱されるようになったのでOSを問わずinstallが楽にできるようになって います。

tcvimeのT-code用の設定

tcvimeのdocに書いてありますが、T-code用の最低限の設定は下記になります。 vimrcに追記してください。

if has('keymap')
let tcvime_keymap_for_help = 'tcode'
set iminsert=0 imsearch=0
imap <unique> <C-J> <C-R>=<SID>EnableKeymap()<CR>
imap <silent> <unique> <C-L> <C-R>=<SID>DisableKeymap()<CR>
imap <silent> <unique> <ESC> <ESC>:set imsearch=0<CR>
endif

function! s:EnableKeymap()
" 既にオンの場合は何もしない
if &iminsert
return ''
endif
call tcvime#SetKeymap(g:tcvime_keymap_for_help)
" <Space>で前置型交ぜ書き変換を開始するか、読みが無ければ' 'を挿入。
" (lmapにすると、lmap有効時にfやtやrの後の<Space>が使用不可。(<C-R>=なので))
imap <silent> <Space> <C-G>u<Plug>TcvimeIConvOrSpace
return "\<C-^>"
endfunction

function! s:DisableKeymap()
" 既にオフの場合は何もしない
if !&iminsert
return ''
endif
set iminsert=0
silent! iunmap <Space>
TcvimeCloseHelp
return "\<C-^>"
endfunction

" lmapのカスタマイズを行う関数。
" tcvime#SetKeymap()からコールバックされる。
function! TcvimeCustomKeymap()
" tc2同様の後置型交ぜ書き変換を行うための設定:
" " 活用しない語
" lmap <silent> 18 <C-G>u<C-R>=tcvime#InputPostConvert(1, 0)<CR>
" lmap <silent> 28 <C-G>u<C-R>=tcvime#InputPostConvert(2, 0)<CR>
" lmap <silent> 38 <C-G>u<C-R>=tcvime#InputPostConvert(3, 0)<CR>
" lmap <silent> 48 <C-G>u<C-R>=tcvime#InputPostConvert(4, 0)<CR>
" " 活用する語(ただしtc2と違って、読みの文字数には活用語尾は含まない)
" lmap <silent> 29 <C-G>u<C-R>=tcvime#InputPostConvert(2, 1)<CR>
" lmap <silent> 39 <C-G>u<C-R>=tcvime#InputPostConvert(3, 1)<CR>
" lmap <silent> 49 <C-G>u<C-R>=tcvime#InputPostConvert(4, 1)<CR>
" lmap <silent> 59 <C-G>u<C-R>=tcvime#InputPostConvert(5, 1)<CR>
endfunction

とりあえずこれでinsert modeに入ってからC-jすることでT-codeと交ぜ書き 変換を行うことができます。 (T-codeを無効にするにはC-lします)

明日はもう少しtcvimeについてお話しようと思います。