저는 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를 다시 호출할 때마다 명령이 창에서 실행됩니다.
테스트를 자주 다시 실행해 보세요.