`iminsert` は `0` だ.絶対にっ.だ.

いつのころからだったでしょうか...

ずっっっ...っいぶん前に,ずーっっっ...っと気になっていることがありまして.

それは,インプットメソッド IM の振る舞い.

挿入モードを抜けた時の IM の状態を自分好みに制御したい.

この課題は,いたる所で採り上げられてきていると思います.

今更と言えば,今更の話なのですが.

f:id:wooweezoowee:20180502051935p:plain

自分は,挿入モードを抜けた時 IM がオフになって欲しい人なので,iminsert=0.なのですが...

長らくこの設定で何一つ問題なく過ごしていたのですが,ある時インサートモードに入った時,IM がオンになっていることに気づきます.

いつのことだか憶えていないくらい前の話ですが.

その時「あれ?」とは思ったものの,「間違って設定変えちゃったかな」程度に遣り過ごしていたのですが,やはり普段の何気ない動きが誤爆し続けると流石に耐えられなくなり .gvimrc に目を通す.

と,設定は間違っていない.と言うか,変わっていない.

効いていないのか? と思ったので :verbose set iminsert?

iminsert=2
    最後にセットしたスクリプト: ~/.gvimrc

ん?

改めて :so ~/.gvimrc して再度.

iminsert=0
    最後にセットしたスクリプト: ~/.gvimrc

そして,挿入モードに入り,IM をひらがな入力モードにして適当に日本語を入力,挿入モードを抜け.
再度挿入モードに入ると...

ひらがな入力モード.

オプションの値を確かめると.

iminsert=2
    最後にセットしたスクリプト: ~/.gvimrc

え?

Vim を再起動してみても同じ.

iminsert=0 と設定しても,iminsert=2 になるの? そういうもの?

iminsert=2 がデフォルトでしたっけ?

いや例えそうだとしても,rc ファイルで iminsert=1 と設定していても,ソフトウェア側のデフォルトの値が,結局強制的に上書きしてくるの?

前からそうでしたっけ?

ま,また,置いて行かてる? ...orz

ヘルプで《インプットメソッドがサポートされていれば 2》てな記載はあるのですが,つまり,この環境では「インプットメソッドがサポートされている,だから 2 になる」ってことなのでしょうか.

数値 (既定では 0、インプットメソッドがサポートされていれば 2)

「rc ファイルで,設定をしていても」,という事なのでしょうか.条件が合致したケースでは,強制的に 2 ということ?
デフォルト(既定の)値,ってそう言うものでしたっけ.

結果,inoremap <ESC> <ESC>:set iminsert=0<CR> を書くことに

そういうことで,正直腑に落ちないのですが,inoremap <ESC> <ESC>:set iminsert=0<CR>.gvimrc に挿し込むことにしました.

ま,ヘルプを読んでいて,set imimsert=0 を設定してやれば事足りるのに,なぜ《コマンド で挿入モードを終える度に値を 0 に戻すには,次のようにすればよい.》以下の内容を,わざわざ追記するのだろうとは思っていたのですが,そういうことなんでしょうね.

rc に set iminsert=0 としても,インプットメソッドがサポートされているので,2 となる.

と. 言うこと? なのか.なんでしょうね.

にしても,"最後にセットしたスクリプト: ~/.gvimrc" って,この .gvimrc では,iminsert2 を放り込むようなところ,どこにもないのに... しつこいけど笑,そういうもの?

そんな中

こんなエントリに出会いました.

» Big Sky :: Vim と日本語入力の話.

内容,結構,胸熱なものだったりするのですが,
こちらによると,iminsert のデフォルトが 2 であること,及びその背景を知ることが出来ます.

フォルト値が 2 になった経緯は我々日本人ではなく、最初に XIM の実装を始めた韓国の開発者による物でした。これは彼らの入力方法と日本人の入力方法が異なる事に起因しています。その頃に調べた所によると彼らの使う IME はアクティブになった後もローマ字が打てるらしいのです。なので iminsert が 2 であっても良いという事でした。丁度 skkinput が大文字でタイプを始めないと IME がアクティブ状態にならないのと同じと思って貰えると分かりやすいと思います。色々と葛藤はありましたが、結局のところ日本のユーザは vimrc で iminsert を 0 に設定して貰う事になっています。

去年の話.かぁ...

そして,iminsert のデフォルト値は 0 になったのだそうです.

なんと iminsert/imseach の値が 0 になりました!

そっかぁ! と思ったって,かなりスッキリはしたのですが,自分が使っている macOSWindows で使っている Kaoriya 版 GVim における挙動は,これまで描写してきた通りで,この話はあくまで Linux 版 の Vim の話,という事なのでしょうかね.

こっちもそうならないものかしら,という事で,おしまい.