возможность переключаться между панелями сломалась в tmux с vim

670
Thermatix

Итак, я запускаю vim внутри tmux, и недавно (на самом деле сегодня) я вдруг не могу использовать ctrl+hjklдля переключения между панелями в tmux и vim, вместо этого он просто издает звук звонка и отказывается переключаться.

Если я выбираю панель tmux с помощью мыши, я могу переключиться обратно на панель vim с помощью, ctrl+hjklно снова не могу переключиться обратно, если не использую свою мышь (я знаю, я знаю).

Проблема возникает только на панели, в которую загружен vim.

По моему у tmux.confменя есть:

# smart pane switching with awareness of vim splits bind -n C-h run "(tmux display-message -p '#' | grep -iq vim && tmux send-keys C-h) || tmux select-pane -L" bind -n C-j run "(tmux display-message -p '#' | grep -iq vim && tmux send-keys C-j) || tmux select-pane -D" bind -n C-k run "(tmux display-message -p '#' | grep -iq vim && tmux send-keys C-k) || tmux select-pane -U" bind -n C-l run "(tmux display-message -p '#' | grep -iq vim && tmux send-keys C-l) || tmux select-pane -R" bind -n C-\ run "(tmux display-message -p '#' | grep -iq vim && tmux send-keys 'C-\\') || tmux select-pane -l" 

и в моей конфигурации vim установлены следующие сочетания клавиш:

so ~/.vim/config/key_codes.vim  " Buffer switching nnoremap <S-l> :bnext<CR> nnoremap <S-h> :bprev<CR>  " \d delete buffer nnoremap <S-x> :Kwbd<CR>   "tagbar toggling map <F8> :TagbarToggle<CR>  map <F7> :NERDTreeToggle<CR>  " Increment numbers nnoremap <A-a> <C-a> nnoremap <A-x> <C-x>  nmap <C-W>! <Plug>Kwbd  nmap <C-p> :CommandT<CR>  map <Leader>c :call vroom#RunTestFile()<CR> map <Leader>s :call vroom#RunNearestTest()<CR> " \t to jump to test file map <leader>t :A<CR> " \t to jump to related file map <leader>r :r<cr> " \E to open file explorer in root map <leader>E :Explore .<cr> " \e to open file explorer in current dir map <leader>e :Explore<cr>  "nerd tree mapings " map <C-n> <plug>NERDTreeFocusToggle<CR>  " shift plus arrow for selection mode " shift+arrow selection map <Del> <Esc>x1i vmap <Del> <Esc>x1v  "multi-cursor mappings" let g:multi_cursor_next_key='<C-n>' let g:multi_cursor_prev_key='<C-p>' let g:multi_cursor_skip_key='<C-x>' let g:multi_cursor_quit_key='<Esc>'  " Removing escape ino jj <esc> cno jj <c-c> vno v <esc>  " Remove highlights with leader + enter nmap <Leader><CR> :nohlsearch<cr>  " Ruby hash syntax conversion nnoremap <F12> :%s/:\([^ ]*\)\(\s*\)=>/\1:/g<return>  " bind K to grep word under cursor vmap K :grep! "\b<C-R><C-W>\b"<CR>:cw<CR> 

key_codes.vim:

function Allmap(mapping) execute 'map' a:mapping execute 'map!' a:mapping endfunction   call Allmap(' <ESC>[A <Up>') call Allmap(' <ESC>[B <Down>') call Allmap(' <ESC>[C <Right>') call Allmap(' <ESC>[D <Left>') call Allmap(' <ESC>[F <End>') call Allmap(' <ESC>[H <Home>') call Allmap(' <ESC>[5~ <PageUp>') call Allmap(' <ESC>[6~ <PageDown>') call Allmap(' <ESC>[k4~ <C-Left>') call Allmap(' <ESC>[5D <C-Left>') call Allmap(' <ESC>Od <C-Left>') call Allmap(' <ESC>[k6~ <C-Right>') call Allmap(' <ESC>[5C <C-Right>') call Allmap(' <ESC>Oc <C-Right>') call Allmap(' <ESC>[1;2 <S>') call Allmap(' <ESC>[1;2A <S-Up>') call Allmap(' <ESC>[1;2B <S-Down>') call Allmap(' <ESC>[1;2C <S-Right>') call Allmap(' <ESC>[1;2D <S-Left>') call Allmap(' <ESC>[1;2d <S-d>') call Allmap(' <ESC>[1;2x <S-x>') call Allmap(' <ESC>[1;2s <S-s>') call Allmap(' <ESC>[3~ <Del>') call Allmap(' <ESC>[1;2h <S-h>') call Allmap(' <ESC>[1;2l <S-l>') 

и потому что это может быть важно, мои точечные файлы .

РЕДАКТИРОВАТЬ: удерживая Ctrl и нажимая, hмой курсор перемещается влево и делает то же самое, но с помощью lcuases мой курсор мигает в Nerdtree, а затем он немедленно мигает обратно в основной текстовый буфер.

То же самое происходит с jи kза исключением того, что он перемещает курсор вниз и отказывается переключаться вверх.

1

1 ответ на вопрос

0
Thermatix

Итак, по рекомендации кого-то другого я установил плагин под названием vim-tmux-navigator, например, так:

Bundle "tmux-plugins/vim-tmux" 

и это исправило мою проблему, хотя я не рад тому, что мне пришлось установить плагин, чтобы вернуть функциональность, которая была у меня до того, как он перестал работать, по крайней мере, сейчас она работает, с другой стороны, мне не пришлось изменять свой tmux-conf, как то, что у меня уже было достаточно хорошо.