창이 포커스를 잃었을 때 Tmux가 Vim에게 알리도록 할 수 있나요?

창이 포커스를 잃었을 때 Tmux가 Vim에게 알리도록 할 수 있나요?

저는 Tmux에서 Vim과 Bash를 나란히 사용합니다. 파일 간에 전환할 때 파일을 자동으로 저장하도록 Vim을 구성했지만 Bash 창으로 전환할 때 자동으로 저장되기를 정말로 원합니다.

창이 포커스를 잃을 때 Tmux가 Vim에 일종의 코드를 보내도록 하는 방법이 있나요?

답변1

이는 아마도 vim클라이언트-서버 모델을 사용하는 것이 가장 좋습니다. 에서 사용하는 방법에 대한 좋은 지침이 있습니다 :help remote.txt.

먼저 vim이 옵션으로 컴파일된 클라이언트가 필요합니다 +clientserver. 배포판이 이런 방식으로 패키징되지 않은 경우 소스 코드를 ( apt-get source, abs, 등을 통해) 얻고 이 옵션을 추가하세요.

tmux이 작업이 완료되면 창을 변경할 때 다음과 같이 활성 창에도 무언가를 보낼 수 있도록 키를 다시 바인딩해야 합니다 .

vim --servername foo --remote-send '<C-\><C-N>:w<CR>'  

다음과 같은 것이 작동합니다(테스트되지 않음).

bind-key 0 run-shell "vim --servername foo --remote-send '<C-\><C-N>:w<CR>'" \; select-window -t :0

답변2

다른 사람들은 이미 vim 플러그인에서 이 작업을 수행했습니다.https://github.com/sjl/vitality.vim

추가 정보 파일에서:

(Vit)ality는 (V)im이 (i)Term 2 및 (t)mux와 잘 작동할 수 있게 해주는 플러그인입니다.

vim과 tmux를 함께 사용한다면 다음에 관심이 있을 수도 있습니다.비독스끼워 넣다.

기본적으로 RunVimTmuxCommand를 호출하면 vimux는 현재 tmux 창 아래에 20% 높이의 가로 창을 만들고 vim의 포커스를 잃지 않고 그 안에서 명령을 실행합니다. 창이 존재하면 RunVimTmuxCommand를 다시 호출할 때마다 명령이 창에서 실행됩니다.

테스트를 자주 다시 실행해 보세요.

관련 정보