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

MacVim、入力モード "ひらがな" で改行すると "英字" モードになってしまう [改]

tech vim

-{2014.12.30 内容に誤りがあったので、追記/修正を加えました。}-

メモ。

macvim でのお話*1

何時かは全然覚えてないけど、IM "on" の状態で改行すると、"off" になってしまう事に気が付く。
「あれ? 前からこんなんだっけ?」と、あまりに日常的な操作の部分だったし、vim をあまり良く知らなかったのもあり、またいつものように、自分の知らぬ所で要らぬコトをしてしまっているんだろう軽く捉え、以来それはかなりの長い間そのままで遣り過ごしていた。ら。。。

f:id:wooweezoowee:20141228023321g:plain

2014.12.30 修正/追記 -{
こいつ制御するオプションがあること、今更になって知った。

.gvimrc に、この一行を追加すると良いのだと。

set noimdisableactivate

そよね、そうですよね、そりゃありますよね。と。

ごめんなさい、嘘つきました。
確かに set noimdisableactivate を挿すことにより振る舞いは変わるのですが、それはやはり原因ではありませんでした。
}- 2014.12.30 追記/修正

きっかけは、実は全くの別件でたまたま訪れたこちらの、こんなフレーズ。;

特に noimdisableactivateを設定しておかないと、自分の環境では改行するたびに日本語入力がOFFにされたりして不便だった。

2011 年。
何年前から来たんだよ、自分。

2014.12.30 修正/追記 -{
と言う事例もありますが、当ケースでは imdisableactivate ではなく、どうも neocomplete.vim で施していた設定が影響していたようです。
具体的な箇所は、申しますと、この部分。;

inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
  return neocomplete#close_popup() . "\<CR>"
endfunction

今は、操作上困ることはないので、この部分をコメント化しています。
今のところ、これで改行時の im は思った通りの挙動をしてくれております。

neocomplete.vim に関する設定は、実のところ、よう意味も分からないままに貼り付けた類のものでして、その意味でも、迎えるべくして迎えた結果とも言え、更にはそんな幸せな勘違を公にしてしまっていた、と実に恥ずかしい限りであります。反省。
}- 2014.12.30 追記/修正

あ、ここでの IM は、os 標準の JapaneseIM です。

imdisableactivate / noimdisableactivate

で、調べると結構でてくるものでして。

どうして今まで気づかなかったのだろう、と*2

しかも、本家にきちんと触れられているし。;

MacVimとMacVim-KaoriYaの違い
ソースコード差分(抜粋)
: (略)
・IM自動ON制御禁止 imdisableactivate

2014.12.30 修正/追記 -{
ここで、imdisableactivate および noimdisableactivate とは何ぞや、について、以前の捉える角度のズレを正す上で、改めて引用し直しておきたいと思います。

gui の macvim では《入力モードから抜ける時、入る時などに、自動的に日本語入力(IM)をオフにする機能*3がもともとあって、imdisableactivate は、

自動的に日本語入力(IM)をオンにする機能を有効にする

ものだと。

そう、決して改行した時の im の挙動を制御するものではありませぬ。
}- 2014.12.30 追記/修正

あぁもうダメだろ、おまえ。 orz

その他。;

» splhack MacVim-KaoriYa 自動IM on禁止
» splhack MacVim-KaoriYa 20110111
» .vimrc の変更が適用されないときは - Qiita

IM 関連は .gvimrc だって

で。今回の作業で imdisableactivate および noimdisableactivate の存在を知った事以上に感動したのが、この "im 関連を定義するのは、.gvimrc の中だっ" てこと。;

'guioptions' とか明らかに GUI まわりの設定や IM まわりの設定は .gvimrc に書かないと反映されない、ということがわかった。

と言うことで、その手の記述は .gvimrc へ持って行く。

その他だと、この辺り。;

» im_control.vim - C-^ でIM切替が行える場合 - fudist

ということで

いかに "基本" と言うモノがなってないか、と。
挙げ句、プラグインがどう、とか考えたりしているけど、問題の多くは、そう言う所じゃないだろうし、そんな事する前にやることあるでしょーに、が正解。

日常的に「こういう人ってホントやだなぁ」と思って見ているあの人は、まさに自分でもあったり。。。
あぁ情けない。

以上メモでした。
おしまい。

ということで、おしまいの後に

-{このセクションも 2014.12.30 追記分です。}-

この追記、実は先日 twitter で直々に指摘を受けまして、それをもってのアクションだったりします。
この場を借りて、お礼とお詫びを。

先で、「いかに "基本" と言うモノがなってないか、...」なんて言っていた矢先、まんまの過ちを晒したわけです。いやあ、誠もって恥ずかしい限り。

さらに冒頭で触れた「あれ? 前からこんなんだっけ?」と言うのは正にその通りだったと。まんまと「知らぬうちに要らんコトをしてしまっていた」と。ほんっとこんな自分にはつくづくガッカリさせられます。

と言うことで、2 度目のおしまいです。
この度は大変失礼しました。

*1:これが macvim 特有のものだった、というのも何気最大のトラップのひとつとなったような気が。これはどうも、他の os、少なくとも win では存在しない話みたいなのですよね。

*2:今よく見ると、その理由は分かるのですが。見た目だけで中身を判断してはダメですね。

*3:この "入力モード" は、vim の入力モード、[i] キー打って入る入力(インサート)モードのことです。ここで使っている Japanese IM の "英字"、"かたかな" の "入力モード" ではありません。