私SSH私のAWS EC2マシン上AmazonLinux地元でUbuntuそしてGNOME端末。開いている場合ウィム内部にSSHセッションを実行してAlt+Tab端末から別のアプリケーションに移動し、+戻るにAlt移動Tabすると迷惑なメッセージが表示されます。E349: No identifier under cursor
またはPress ENTER or type command to continue
。いくつかの調査の終わりに理由を見つけました。奇妙な文字が次に送信されました。SSH端末Alt+Tab を押したとき:
[ec2-user@ip-172-31-43-121 ~]$ cat
^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I
^[[O^[[I
Alt+注文ごとTab。この文字はどういう意味ですか?送信される理由とこれを防ぐ方法は何ですか?
編集:GNOME端末を再起動することで修正されました。
答え1
これはxtermを送信する端末ですピントが合い/フォーカスが合わない脱出する。 vimは、カーソルがウィンドウを離れるとき(alt-tabを使用するとき)にわかるモードに端末を設定します。
することができます防ぐこれは、vimでマウスを処理するために使用されるモードを変更することによって行われます。 xtermのドキュメントをチェックすると、vimは引数を指定して特定のエスケープシーケンスを送信する必要がありますが1004
(xtermにこれらのエスケープを送信するように指示するため)、vimではこれを見ることはできません。ソースコード。他の端末では、マウス移動モードの副作用としてこれを行うことができます1003
(vimからそれを送信します)。
if(xterm_mouse_vers> 0) { if(on) // マウスイベントを有効にし、可能であればマウストレースを使用します。 out_str_nf((char_u *) (xterm_mouse_vers> 1 ? ( #ifdef FEAT_BEVAL_TERM bevalterm_ison ? IF_EB("\033[?1003h", ESC_STR) "[?1003h") : #endif IF_EB("\033[?1002h", ESC_STR "[?1002h")) : IF_EB("\033[?1000h", ESC_STR "[?1000h"))); else // マウスイベントを無効にし、常に同じイベントを送信できます。 out_str_nf((char_u *) (xterm_mouse_vers> 1 ? IF_EB("\033[?1002l", ESC_STR "[?1002l")) : IF_EB("\033[?1000l ") ", ESC_STR "[?1000l"))); mouse_ison =オン。 }
vimの期待される動作を理解するには、使用している端末のユーザーマニュアルを参照する必要があります。