macvim で "ちょ" なのに "tyo" なんで、ちょっ
これ。*1
いわゆる拗音(ようおん)、でいいと思うのですが、ってやつで、これをかなモードで入力中に起こる。
ちなみに、ちょっと分かりにくいですが、入力モード "ひらがな" (im/ime が on) の時にはカーソルの色を変えています。赤にしています。抜ける*2と戻る。
環境は、macos は 10.8 mavericks。
インプットメソッドは、特に深いこだわりもないことあって、ことえり。
策としては、.vimrc に、ここで導入しているプラグイン neocomplete.vim に関する以下設定を追記。 ;
" 日本語入力時、無効化 let g:neocomplete#lock_iminsert = 1
一応、起こらなくなりました。...ここでは。...今んとこ。
ひらがな入力モードで補完機能を抑制すでば良い、でよかった
mac で言う、モード 'ひらがな' での入力時、neocomplete.vim による補完を無効に(ロック)する、なスイッチがあった。きちんと。
それが g:neocomplete#lock_iminsert
。
let g:neocomplete#lock_iminsert = 1
FIX。
そもそも日本語入力の時って、補完、要らないんじゃ?、ってずっと思っていたし。*3。
と言うことで。
この情報に辿り着くまで、ほんっと遠かった。です。と言うか、無駄に遠回りしただけなんだけど。
しかも、やったー、と振り向いたら、ヘルプの faq にガッツリ書いてあった、と言う始末。 ;
Q: neocomplete conflicts when multibyte input in GVim.
A: Because Vim multibyte IME integration is incomplete.
You should use "fcitx" instead of "ibus".
If you set |g:neocomplete#lock_iminsert| is non-zero, it may be fixed.
もーだめだ。さすが情弱(笑
補完が発動するタイミング調整することでも
ちなみに実は、最初こっちを見つけた。
この "タイミング" と言うのはつまり、文字数で、
何文字打ったら、補完を行わせるか、をチューニングすると良いらしい。
"りょう" を打ちたくて、"ry" で補完させに行くのではなく、ちゃんと "ryou" まで待ってもらうようにすれば良し、という考え方。
これを制御できるのが g:neocomplete#auto_completion_start_length
と。
この値、上の考えだと "4" なのかもしれませんが、"3" でもイケる模様。;
" 補完開始文字数 let g:neocomplete#auto_completion_start_length = 3
一応確認済み。
以上で、本題は終了です。
おわりに
ちょっと追記。
現象について、ちょいと
具体的な振る舞いは、上掲のアニメーションで伝わるかとは思いますが、
どうも、"ちゃちゅちょ" とか "しゃしゅしょ" とか 拗音 で引っ掛るのが殆どかと言う印象。
これら入力途中、自動補完機能が走り、そのプルダウンリストが現れて、これに干渉される感じで ime が off になり、その平仮名文字列は入力できなくなる。
で、ここで改めて、の振る舞いで気になる点が 3 つほどあって、;
- バッファおよび入力の位置によって、起こる時と起こらない時がある。*4
- macos のみで win 環境*5では起きない。(ちなみに、mac と win 環境しか見ていない。)
- 何時、イベント共に具体的に把握できていないのですが、以前は気にしたこと無かったように思う。つまり、このような現象はなかったと思う。*6
特に 2。 問題は、インプットメソッドの癖と言うか、仕様にあるみたい。
mac の ことえり だと入力したキーのキャラは、出力窓に "ry" と、シングルバイトで展開される。
一方、win は、これも os 標準のを使っているのですが、押下キーのキャラは "ry" と全角で現れる。したがって、シングルバイトで構成している補完のプルダウンの内容に干渉することはない。*7
なので mac だから、とか win だから、と言う話ではなく、インプットメソッドの振る舞いによる、と言う話なのかもしれません。
最後に出典とか
同様の現象は思ったより報告されているようなのですが、
neocomplcache から neocomplete にしたら無くなった、とか、
解決しようとしたけど、途中諦めて、放置っての、が多くて。
何で?
で、まず最初の大きな分岐点となったのがコチラ。
「みんな neocomplete.vim の設定て、どうしてるんだろ」思って色々な方の vimrc を片っ端から見ていて、たまたま辿り着いたコチラで g:neocomplete#auto_completion_start_length
の存在を知る。感謝。;
これに紐づく感じで、色々と情報が掛かってくるようになり、
トドメの決定打となったのが、この tweet 遣り取り。
@dictav 一つの方法としては、neocomplcacheの補完開始文字数を3文字にする、g:neocomplcache_lock_iminsert を 1 にしてみるという手があります。
— 暗黒美夢王(暗黒美夢女王募集中) (@ShougoMatsu) 2013, 1月 6
ここで g:neocomplcache_lock_iminsert
に。依然 neocomplcache が多いのですが、そこは neocomplete に置き換えればよろし。一気に開けるわけです。
その他にも、一応。
一応、g:neocomplcache_lock_iminsertとすると日本語入力時に無効化できます。
@JMGecko それは昔から報告されている現象ですね。g:neocomplcache_lock_iminsertで治るかもしれません。
— 暗黒美夢王(暗黒美夢女王募集中) (@ShougoMatsu) 2013, 3月 10
@kazuta46 それは既知の問題です。FAQを参照。g:neocomplcache_lock_iminsertをセットするとうまく行くかも知れません。
— 暗黒美夢王(暗黒美夢女王募集中) (@ShougoMatsu) 2013, 5月 11
@todesking You should use "fcitx" instead of "ibus". If you set |g:neocomplete#lock_iminsert| is non-zero, it may be fixed.
— 暗黒美夢王(暗黒美夢女王募集中) (@ShougoMatsu) 2014, 6月 3
twitter 上に多いんだなぁ。これから注意しよう。*8
あとさ、ちょっと話逸れるのですが、google の検索、os やブラウザーによって違うの何気にヤラレル。と言うか、何で?
と言うことでして、
そう言えば、今週末の vimrc 読書会 は何気特に楽しみだったりする。
ってか、もう明日か。
はいおしまい。
*1:先日ここで、vim を真っ新にし、インストールし直した、というのは、これがキッカケで...
*2:"英字"入力モード、つまり ime/im が off の状態。こちらを参照して以来、ずっとこうしてます。便利です。
*3:この設定を知らずに、この現象に対峙した時、実際自分も「ime の状態ば見て、neocomplete.vim の補完発動を制御できるようにすれば良いんじゃ?」と思って、行動に出た経緯あり。勿論、その結果は、施したいずれの対処も漏れなく vim の挙動を狂わせた、と言う(笑 orz
*4:この 1 つめのアイテムは、上のアニメーションでも垣間見ることが出来ると思います。例えば、行頭はダメなんだけど、同行でも別の位置だと問題ない。
でも、これも再現性にバラつきあって、時には、この関係が逆転したりすることもあって実に気持てぃ悪ぃ。
*5:オフィスでは win 7 32 bit が宛がわれており、そこでも vim(香り屋版) を使っています。若干の違いでほぼ同様の設定/プラグイン環境と言っていいかな、と。
*6:os のアップデート? vim の 7.4 ? プラグインのアップグレード? この辺りでしょうが、わかりません。覚えてません。
*7:と、書きながら思ったのですが、[default] コマンドで設定できたりするのだろうか?
括弧や記号は、ひらがな入力モードでも常時半角になるよう、強制的に [default] コマンドで設定している。これと同じ感じで。...だとしても、ちょっと面倒かな。最初だけだろうけど。
*8:フォローしてるのに...