02/01/31 23:43
foo.vim解読の続き。
挿入モード時に _foo_ のように入力すると FOO に変換されるスクリプト
:imap _ _<Esc>:call Capitalize()<CR>s
fun! Capitalize()
if exists("b:Capitalize_flag")
unlet b:Capitalize_flag
normal! vF_Ux,
else
let b:Capitalize_flag = 1
execute "normal! a_\<Esc>"
endif
endfun
挿入モードで _ をタイプすると _ を挿入してノーマルモードにして Capitalize() が
呼ばれる。最初は b:Capitalize_flag は定義されていないので else 側の a_<ESC> が
実行されてもう一個 _ が入力される。そして Capitalize() を抜けて s で _ が
消えて挿入モードに戻る。 _ は入力しないで a で挿入モードに戻ればいいような気も
するけど。
んで _foo_ までタイプすると再び Capitalize() が呼ばれて b:Capitalize_flag はさっき
定義されたので if 側が実行される。vF_UX, はビジュアルモードにして foo の左側の
_にジャンプして全部大文字にして _ を消して右側の _ に移動するという意味。で、s
で右側の _ も消されて挿入モードに戻ると。 b: はバッファローカルという意味。
>>155
Ctrl+\ でIMEをトグルする方法っすね。