2

私の中に次の行があります.vimrc

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

通常モードで Vim ウィンドウ間をすばやく移動したい。上記のマッピングはウィンドウ間で問題なく機能しますが、MiniBufExplorer に到達するとスタックし、最初のウィンドウに回転しません。

MiniBufExplorer に移動しないように、これをどのようにマッピングすればよいですか?

4

2 に答える 2

3

minibufexpl.vim プラグインには、MiniBufExplorer ウィンドウに表示されるバッファー名を循環するように Tab を再マップする 2 行があります。これらを削除/コメントすると、タブの再マッピングが機能します。

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

さらに、ウィンドウまたはバッファを切り替えるための C-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
于 2012-12-13T15:44:39.527 に答える
0

ご要望どおりではありませんが、これらはウィンドウ間を移動するための便利なキーボード ショートカットです。

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 プラグインをチェックしてください。

于 2012-02-07T08:34:35.993 に答える