Перемещайтесь между окнами Vim с помощью <tab> и <s-tab>

У меня есть следующие строки в моем .vimrc:

nnoremap <tab> :wincmd w<cr>
nnoremap <s-tab> :wincmd W<cr>

Я хочу быстро перемещаться между окнами Vim в обычном режиме. Вышеуказанные сопоставления работают нормально между окнами, но когда я попадаю в MiniBufExplorer, он застревает и не поворачивается к первому окну.

Как мне сопоставить это, чтобы оно не перемещалось в MiniBufExplorer?

2 ответа

В плагине minibufexpl.vim есть две строки, которые переназначают Tab для циклического перебора имен буферов, отображаемых в окне MiniBufExplorer. Если вы удалите / прокомментируете их, перераспределение вкладок будет работать.

nnoremap <buffer> <TAB>   :call search('\[[0-9]*:[^\]]*\]')<CR>:<BS>
nnoremap <buffer> <S-TAB> :call search('\[[0-9]*:[^\]]*\]','b')<CR>:<BS>

Кроме того, ниже приведены глобальные настройки, которые уже управляют функциональностью C-Tab для переключения между окнами или буферами. Вы можете изменить их или, по крайней мере, знать об этой функции. NB, вам все равно придется удалить вышеупомянутое отображение вкладок, чтобы получить перемещение на основе вкладок (вместо C-Tab).

if !exists('g:miniBufExplMapCTabSwitchBufs')
  let g:miniBufExplMapCTabSwitchBufs = 0
endif

" Notice: that if CTabSwitchBufs is turned on then
" we turn off CTabSwitchWindows.
if g:miniBufExplMapCTabSwitchBufs == 1 || !exists('g:miniBufExplMapCTabSwitchWindows')
  let g:miniBufExplMapCTabSwitchWindows = 1
endif 

" If we have enabled <C-TAB> and <C-S-TAB> to switch buffers
" in the current window then perform the remapping
"
if g:miniBufExplMapCTabSwitchBufs
  noremap <C-TAB>   :call <SID>CycleBuffer(1)<CR>:<BS>
  noremap <C-S-TAB> :call <SID>CycleBuffer(0)<CR>:<BS>
endif

" If we have enabled <C-TAB> and <C-S-TAB> to switch windows
" then perform the remapping
"
if g:miniBufExplMapCTabSwitchWindows
  noremap <TAB>   <C-W>w
  noremap <S-TAB> <C-W>W
endif

Не совсем то, что вы просили, но это полезные сочетания клавиш для перемещения между окнами.

map <c-j> <c-w>j
map <c-k> <c-w>k
map <c-h> <c-w>h
map <c-l> <c-w>l

Это делает Ctrl + <direction> перемещаться между окнами (включая MiniBufExpl, когда он открыт). Вкладка, вероятно, лучше зарезервирована для завершения кода, проверьте плагин SuperTab.

Другие вопросы по тегам