xterm이 초점 신호를 잃고 vim이 입력 모드를 종료합니까?

xterm이 초점 신호를 잃고 vim이 입력 모드를 종료합니까?

저는 수년간 KDE 데스크탑의 Debian/Ubuntu/Arbian 버전에서 xterm을 사용해 왔습니다. 저는 마우스 데스크탑 설정에 따라 포커스를 사용하고 .vimrc에서 ":set mouse=a"를 사용합니다. 최신 버전에서는 추적 방법을 모르는 잘못된 동작이 발생했습니다. Debian 10->11, Buster->Bullseye에서 발생하는 것 같습니다.

vim이 입력 모드에 있을 때 vim이 실행 중인 xterm 밖으로 커서를 이동하면(창이 초점을 잃음) 경고음이 울리고 마치 누군가 해당 창에서 esc를 누른 것처럼 vim이 명령 모드로 전환됩니다. 이전 동작은 복사한 내용을 다른 창에 붙여넣을 수 있도록 포커스가 vi 창으로 돌아올 때까지 조용히 기다리는 것이었습니다.

데스크탑의 gvim에는 이 문제가 없습니다.
이는 새로운(Bullseye) 시스템에서 shell+vim을 사용하여 ssh를 통해 통신하는 기존(버스터) 데스크탑에서 발생합니다.

여기서 무슨 일이 일어나고 있는 걸까요? 새로운 쉘이 포착하도록 설계된 신호를 전달합니까? 추적하는 방법?

답변1

vimrc에 다음 줄을 추가해 보세요. (추가 정보: :help xterm-focus-event)

set t_fd= t_fe=

Vim 8.2.2345에는 기본적으로 활성화되어 있는 xterm focus 이벤트에 대한 지원이 추가되었습니다.

https://github.com/vim/vim/commit/681fc3fa782e99fe69ed2c83c3e29109d2d61e1a

내 환경에서는 이 새로운 설정이 활성화되고 삽입 모드에서 esc에 대한 매핑이 있을 때 창이 포커스를 잃으면 마치 esc를 누른 것처럼 vim이 명령 모드로 전환됩니다.

(버그인지 사양인지는 잘 모르겠습니다.)

답변2

문제는 Debian vim-tiny 패키지의 "vi"에서 발생하지만 vim-basic 또는 vim-gtk의 "vi"에서는 발생하지 않는 것으로 나타났습니다. 그 이유는 vim-tiny가 설치한 /etc/vim/vimrc.tiny의 "set Compatible" 줄이 주석 처리되지 않았기 때문입니다. 다른 사람들은 /etc/vim/vimrc만 설치합니다. 이것은 내 설치 간의 동작 차이를 설명합니다.

분명히 vim-tiny의 "vi"는 터미널에서 포커스 변경 알림을 요청하지만 어떻게 해야 할지 모릅니다. 다른 이름 "vim"을 사용하여 동일한 패키지에서 동일한 프로그램을 호출하면 문제가 표시되지 않습니다.

가장 빠른 해결 방법은 /etc/vim/vimrc.tiny에서 "set- Compatible"을 "set-in Compatible"로 변경하는 것입니다.

하룻밤 사이에 Raspberry Pi 포럼에서 세 가지 훌륭한 답변을 얻었습니다.

관련 정보