나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^[[I
Alt+ 주문당 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의 예상 동작을 이해하려면 사용 중인 터미널의 사용자 설명서를 참조해야 합니다.