애플리케이션 간에 Alt+Tab을 누르면 이상한 문자가 SSH 터미널로 전송됩니다.

애플리케이션 간에 Alt+Tab을 누르면 이상한 문자가 SSH 터미널로 전송됩니다.

SSH내 AWS EC2 머신에아마존리눅스현지에서우분투그리고그놈 터미널. 열려 있으면내부에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. 이 문자는 무엇을 의미하나요? 전송되는 이유와 이를 방지하는 방법은 무엇입니까?

편집: 그놈 터미널을 다시 시작하여 수정되었습니다.

답변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의 예상 동작을 이해하려면 사용 중인 터미널의 사용자 설명서를 참조해야 합니다.

관련 정보