Closed JuraCureMihawk closed 9 years ago
gvim -u NONE -U NONE -N
で起動した場合でも発生しますか?
gvimのバージョン、Windowsのバージョン、使用しているIMEなどの情報もお願いします。
vimrc に以下を足して貰えますか
if exists('&iminsert')
set iminsert=0
set imsearch=0
endif
@k-takata gvim -u NONE -U NONE -N でも発生しました。
バージョン情報 gvim: 7.4.648 Windows: Windows7 Professional 32bit IME: Google日本語
@mattn vimrc に足してみましたが、発生しました。 gvimrc でも試しましたが、同様に発生しました。
関係するのは iminsert の方だけのようで 7.4.727 990L normal_cmd() の
if (curbuf->b_p_iminsert != B_IMODE_LMAP)
im_save_status(&curbuf->b_p_iminsert);
で b_p_iminsert が B_IMODE_IM に差し替えられて次回も強制的に IM がオンになっているようです。
一応、iminsert=1 であればご期待の動作になるような気がしますがどうでしょうか?
すみません。間違ったコメントしたので消しました。 僕の環境だと再現しないんですよね。
:version
に +multi_byte_ime
が付いてないとかですかね。
つまりコンパイル時に IME=yes を指定してない。
以降の操作で "f" を押下すると、ノーマルモードのままで日本語入力モードになる。
これですが、f
で検索すべき文字の入力を待っている状態で日本語入力モードになることを指していますか?
そうだとすると、f
やインサートモードに入ったときに、以前の日本語入力モードの状態が復元されるのは仕様だと思います。
f
等で必ず半角入力とするには、例えば以下のような設定はどうでしょうか。
nnoremap f :set iminsert=0<CR>f
nnoremap F :set iminsert=0<CR>F
nnoremap t :set iminsert=0<CR>t
nnoremap T :set iminsert=0<CR>T
@ynkdir あーなるほど ImmAssociateContext か。
@nb1839 vimrc に足してみましたが、現象は変わりませんでした。
@ynkdir +multi_byte_ime はついていました。
@k-takata はい。次のキー入力を待っている状態で日本語入力モードになります。 nnoremap をvimrcに足してみましたが、現象は変わりませんでした。
少なくとも @k-takata さんが提示した設定(f
のみ)をして起動したgvimでf
入力時に日本語入力モードになることはなくなりました。
gvim -N -u NONE -c "nnoremap f :set iminsert=0<CR>f"
バージョン情報 gvim: 7.4.648 32bit Kaoriya版 Windows: Windows7 Professional 32bit IME: Microsoft IME (10.1.7601.0)
@JuraCureMihawk 実際にやった内容(Vim起動、入力したコマンド)をここにコピペしてもらえますか。
横からすいません。 Windows版gVimで、fキー等で日本語入力モードになり、 そしてその後、そのまま何か入力して漢字変換などして確定すると、その文字に飛べるのは、 むしろ、Windows版gVimの利点だと思います。(Linuxだと素のOnTheSpotだとできなかったと思うので)
@k-takata さんの書かれている通り、これは仕様だと思います。
なので、"f" or "F" or "t" or "T"
の後に、半角/全角
を押さないようにするか、
日本語入力モードになってしまっても、そのまま、もう一度半角/全角
を押せば、
挿入モードにしなくても、日本語入力をOFFにできます。
(今すぐ、確認できるWindows版のGvimが7.2.411という古のバージョンなので、現状とは違うかもしれませんが…)
@presuku ご意見ありがとうございます。私も仕様だと思ってます。(言われている挙動はGVim 7.4.648でも同じです)
今は仕様かどうかとは別に、@JuraCureMihawk さんの環境で現象が変わらなかったけど私のとこでは現象が変わったので、どこが違うのかを調べてクリアにしようとしています。
@h-east さん、@JuraCureMihawk さんの最初の手順を見ると
[操作手順(入力キー)]
1. "f" or "F" or "t" or "T" (いずれか1つ)
2. "半角/全角" (左上、ESCキーの直下)
以上
と、あるので、f
等で入力待ち状態になった時に、2. "半角/全角" (左上、ESCキーの直下)
で、
日本語入力がONになってしまう事自体を、問題ととらえてるのかなと思いました。
gvim -N -u NONE -c "nnoremap f :set iminsert=0<CR>f"
の様にf
をマップして、
以前の日本語入力の状態をOFFにしても、2. "半角/全角" (左上、ESCキーの直下)
を押したら、
結局、日本語入力モードになってしまうかなと。
と、あるので、f等で入力待ち状態になった時に、2. "半角/全角" (左上、ESCキーの直下)で、 日本語入力がONになってしまう事自体を、問題ととらえてるのかなと思いました。
あっ!自分で "半角/全角" キーを押すってことだったのですね!!勘違いしてました。 ご指摘Thanksです。
ということで「それは仕様です」で終了ですかね?
f の後日本語(文字)が検索できるという仕様ですね。
私は「f で日本語検索した後、カーソル移動後また f をやったら勝手に IME on になっちゃうんですが?」 と読んじゃってました。 昔の vim (というか jvim3.0) では f で検索後は自動的に IME off にしているので てっきりそういう類の挙動の話だとばかり。。。どうも失礼しました。
皆さん、色々なご意見ありがとうございます。 f → 半角/全角キーをESCで中断させたため、再度 f を押した際に中断した所から再開しているってことですね。 自分の先入観で障害と判断していました。 失礼致しました。
[モード] ノーマルモード
[操作手順(入力キー)]
[現象] 以降の操作で "f" を押下すると、ノーマルモードのままで日本語入力モードになる。 (F, t, Tでも同様に発生。)
[回避策] 挿入モードに移った後、ノーマルモードに戻る。