Vim 을 Ctrl-h/j/k/l 로 split navigate 하게 설정 (트랙 4). tmux 를 prefix + h/j/k/l 로 pane navigate 하게 설정 (트랙 6). tmux 안에 셸 pane 옆에 Vim split 갖는 순간 손가락이 어떤 prefix 적용할지 몰라. 두 시스템, 두 머슬 메모리, 경계 가로지를 때마다 마찰.
해법: vim-tmux-navigator
christoomey/vim-tmux-navigator 가 두 레이어에서 Ctrl-h/j/k/l 매끄럽게 작동하게 하는 tiny plugin. Vim 에서 Ctrl-l 누르고 — 오른쪽에 split 있으면 거기로 가고; 없으면 tmux 가 오른쪽 pane 으로 이동. 경계가 사라져.
작동 방식
두 반: Vim plugin 과 tmux config 스니펫. tmux 쪽이 포커스된 pane 이 Vim 프로세스 돌리는지 체크; 그렇다면 Ctrl-h/j/k/l 을 Vim 에 포워드, Vim plugin 이 처리. 안 그러면 tmux 가 select-pane 직접 실행. 영리하고, 견고하고, 스니펫이 1 분에 읽기 충분히 짧아.
두 반 다 install
lazy.nvim 통해 Vim plugin 추가. tmux 스니펫을 ~/.tmux.conf 에 추가하고 reload. 그게 셋업 전체; 박히면 navigation 이 마법처럼 느껴져.
통합은 레이어를 제거하지, 추가하지 않아. vim-tmux-navigator 없는 Vim+tmux 는 끊임없이 번역하는 두 도구. 함께면 한 워크스페이스로 collapse. 최고의 통합 plugin 은 더 많은 버튼 주는 게 아니라 정신 부하 줄여.
Caveat
감지 regex 가 Vim 프로세스 이름이 vim, nvim, view 같은 거 포함한다고 가정. 일부 sandbox 된 터미널이나 특이한 프로세스 (fzf, lazygit) 가 헷갈릴 수 있어. Plugin 의 README 가 edge-case 오버라이드 커버. 99% 사용자에 아래 스니펫 그냥 작동.
Code
lazy.nvim plugin spec 에 추가·lua
{
"christoomey/vim-tmux-navigator",
cmd = {
"TmuxNavigateLeft", "TmuxNavigateDown",
"TmuxNavigateUp", "TmuxNavigateRight",
"TmuxNavigatePrevious",
},
keys = {
{ "<C-h>", "<cmd>TmuxNavigateLeft<CR>", desc = "Go to left split/pane" },
{ "<C-j>", "<cmd>TmuxNavigateDown<CR>", desc = "Go to lower split/pane" },
{ "<C-k>", "<cmd>TmuxNavigateUp<CR>", desc = "Go to upper split/pane" },
{ "<C-l>", "<cmd>TmuxNavigateRight<CR>", desc = "Go to right split/pane" },
{ "<C-\\>", "<cmd>TmuxNavigatePrevious<CR>", desc = "Go to previous split/pane" },
},
}
1. tmux 안에서 세로 split 열기 (prefix + |).
2. 한 pane 에서 nvim 실행.
3. Vim 안에서 :vsp 다른 파일 (Vim 내부 split 갖게).
4. Ctrl-h / Ctrl-l 반복 누름.
걸어가야 함: 왼 tmux pane ←→ 왼 Vim split ←→
오른 Vim split ←→ 오른 tmux pane.
5. 순수 흐름. Prefix 불필요, 레이어 생각 X.
vim-tmux-navigator (Vim plugin) install 하고 매칭 tmux 스니펫 추가. 위 검증 루틴 실행. 처음 작동할 때 잠깐 인지 — 그게 이 트랙 전체의 목표야. Ctrl-h/j/k/l 가 나중에 레이어 가로지르기 멈추면 regex 가 여전히 Vim 프로세스 인식하는지 체크 (드물지만 커스텀 빌드 경로로 일어나).
Progress
Progress is local-only — sign in to sync across devices.