我的 中有以下几行.vimrc
:
nnoremap <tab> :wincmd w<cr>
nnoremap <s-tab> :wincmd W<cr>
我想在普通模式下快速在 Vim 窗口之间移动。上面的映射在窗口之间工作得很好,但是当我到达 MiniBufExplorer 时,它卡住了并且不会旋转到第一个窗口。
我应该如何映射它以使其不会移动到 MiniBufExplorer?
我的 中有以下几行.vimrc
:
nnoremap <tab> :wincmd w<cr>
nnoremap <s-tab> :wincmd W<cr>
我想在普通模式下快速在 Vim 窗口之间移动。上面的映射在窗口之间工作得很好,但是当我到达 MiniBufExplorer 时,它卡住了并且不会旋转到第一个窗口。
我应该如何映射它以使其不会移动到 MiniBufExplorer?
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 功能以在窗口或缓冲区之间切换。您可能想要修改这些或至少了解此功能。注意,您仍然必须删除上面的 Tab 映射才能获得基于 Tab(而不是 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)。Tab 可能更好地保留用于代码完成,请查看SuperTab 插件。