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

Vimのkeymap feature (果てはVimでのT-codeを支援するtcvime.vimとその最近追加された便利機能について) - Vim Advent Calendar 2012 24日目

Vim Advent Calendar 2012 の 24 日目の記事です。

keymap という feature について

Vimにはkeymapというfeatureがありこれを有効にしてcompileされていると
例えば

:set keymap=dvorak

とすることでinsert mode時にdvorak配列で入力できるようになります。
(keymapを定義している.vim files は **/share/vim/vim73/keymap/ 下あたりにあります。)

他に標準添付されているkeymapで日本人が使えそうなkeymapとなるとkana.vimがあります。

:set keymap=kana

とすると insert mode では **/share/vim/vim73/keymap/kana.vim で定義されているようにかな入力ができます。

素のkeymapに戻したい場合

:set keymap=

とします。

「ひらがな、カタカナのみのJapanese communicationでOKさ!」ってんならこれだけでIMいらずで助かるのですがおそらくそれは無理でしょう。漢字を入力する方式が必要になってきます。

keymap の機能を活用し漢字を入力する

日本語を扱う上で便利な設定やスクリプトが追加されているKaoriyaさん版のVimでは
シフトJIS文字を挿入するkeymapが追加されています。
https://github.com/splhack/macvim/tree/master/plugins/kaoriya/keymap
この中には

  • tcode_cp932.vim
  • tutcode_cp932.vim

といった漢直入力用keymap filesがあります。
ここではこの2つのkeymap filesの内のT-codeの方(tcode_cp932.vim)を使ってみます。
これらを導入した環境ではこれまで同様

:set keymap=tcode_cp932

とすることでinsert mode時にT-codeのkeymapが有効になり、T-codeをすべて記憶していれば大体の漢字は変換無しで入力することが可能になります。

ただここでujihisaさんのように「よし俺は根性でT-codeをすべて覚えるぞ」というのはおすすめしません。
T-code使いのすべてがT-codeを覚えているわけではなく、まずT-code入力支援の仕組みを活用しています。

そこでtcvime.vimですよ

ここでtcvime.vimの登場です。
https://github.com/kanchoku/tcvime
tcvimeの導入により、「漢字変換機能」と「変換を用いた漢字のT-codeを表示してくれる」機能が使えるようになります。
これらの機能を使い、頻繁に用いる漢字を少しずつ覚えていくことがおすすめです。(ひらがなは覚える必要があります。)

tcvime.vimの導入方法、ひらがなの覚え方などは https://gist.github.com/4076375 をご参照ください。

最近追加された便利機能

tc2同様の後置型交ぜ書き変換、さらにはVimの補完ポップアップメニューで変換候補の表示、moreさらには変換で確定した文字列のヘルプ表の自動表示

例えば「ゆづか姫」と打ちたいとする

f:id:kozo2:20121224064654p:plain

「ひめ」だけ変換したいので、ここで「28」とうつ(いまのpointから2文字前の文字が変換対象となる、さっきのgistの設定なら)

f:id:kozo2:20121224064812p:plain

Vimの補完ポップアップメニューで変換候補が選択できる。「姫」で確定すると...

f:id:kozo2:20121224065115p:plain

tcvimeのhelp用bufferに「姫」の部首合成変換のための文字の組み合わせ「女+臣」が自動で表示される。 ちなみに

  • 姫はT-code標準の2strokeではsupportされていない文字。
  • 臣もT-code標準の2strokeではsupportされていない文字なので姫は普通に交ぜ書き変換した方がよい。
  • というかT-coderも部首合成変換はほとんど使ってないと思われる

複数文字のhelp表表示機能、visual modeからのhelp表表示機能

例えば「西田」という漢字を交ぜ書き変換し、help表bufferを消した後でまた見たくなったとする。

f:id:kozo2:20121224072537p:plain

visual modeで「西田」を選択後、(tcvimeのdefaultでは)C-k ?を入力

f:id:kozo2:20121224072646p:plain

おわりに

時代はT-code