VIMを使用する時に自動的にインプットソースが変わる
問題
日本語やベトナム語を入力している時に、コマンモードを移動する度に英語インプットソースに変えないといけないという問題があるんでしょうね。 それのような問題(中国語の場合)に対して、解決できるVIMプラグインが有りました。 今回それを基づいて初めてのVIMプラグイン開発することとして、日本語やベトナム語もそういう機能に適用します。
対策
全体的に言うと、VIMが提供してくれているInsertEnter
とInsertLeave
と言うイベントを使います。
それらの時に現在のカーソルの位置のキャラクターはどんな言語化を判定して、インプットソースを変える。
1 2 3 4 5 |
autocmd InsertEnter * :call s:insert_entered() if g:osxime_insert_leave autocmd InsertLeave * :call s:insert_leave() endif |
上記のコードを見ると、InsertEnter
イベントが発火したらs:insert_entered()
が呼ばることを何とか判定できるんでしょうね。
そのように、InsertLeave
も発火したらs:insert_leave()
が呼ばると言う認識が間違いないでしょう。
何で
s:
と言う微妙な文字が入ってるんですか?
それはVIMのスコープを指定する文字です。
1
|
:help internal-variables |
を実行したら、以下のスコープを指定する文字一覧が出てきます。
1 2 3 4 5 6 7 8 |
buffer-variable b: Local to the current buffer. window-variable w: Local to the current window. tabpage-variable t: Local to the current tab page. global-variable g: Global. local-variable l: Local to a function. script-variable s: Local to a |:source|'ed Vim script. function-argument a: Function argument (only inside a function). vim-variable v: Global, predefined by Vim. |
と言うのは:s
と言うは簡単に言えばファンクションの指定語です。
2021年2月時点:申し訳ないです、このブログを書き続けるつもりだったが現在Emacsを使用することにしましたので、プラグインのGitをこちらに参考してください
https://github.com/nhs000/vim-macos-ime
。
Author nhs000
LastMod 2018-02-11