アプリケーション間でAlt + Tabを押すと、奇妙な文字がSSH端末に送信されます。

アプリケーション間でAlt + Tabを押すと、奇妙な文字がSSH端末に送信されます。

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^[[IAlt+注文ごと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の期待される動作を理解するには、使用している端末のユーザーマニュアルを参照する必要があります。

関連情報