Vim 7.0+ 內建標籤頁功能可取代傳統 Buffer List 與第三方外掛 (MiniBufExplorer、tabbar),提供現代編輯器一致的多檔案管理體驗。關鍵在於建立高效的鍵盤映射實現快速切換。
noremap <silent><Tab>m :tabnew<CR> noremap <silent><Tab>e :tabclose<CR> noremap <silent><Tab>n :tabnext<CR> noremap <silent><Tab>p :tabprevious<CR> noremap <silent><Leader>t :tabnew<CR> noremap <silent><Leader>g :tabclose<CR> noremap <silent><Leader>1 :tabnext 1<CR> ... noremap <silent><Leader>9 :tabnext 9<CR> noremap <silent><Leader>0 :tabnext 10<CR> noremap <silent><S-Tab> :tabnext<CR> inoremap <silent><S-Tab> <ESC>:tabnext<CR>
if has('gui_running')
set winaltkeys=no
set macmeta
noremap <silent><C-Tab> :tabprevious<CR>
inoremap <silent><C-Tab> <ESC>:tabprevious<CR>
noremap <silent><M-1> :tabnext 1<CR>
...
noremap <silent><M-0> :tabnext 10<CR>
inoremap <silent><M-1> <ESC>:tabnext 1<CR>
...
inoremap <silent><M-0> <ESC>:tabnext 10<CR>
endif
MacVim 更可用 <D-1>...<D-0> (Command+數字) 切換,手感最佳。
終端機將 Alt 鍵送出 ESC + 字元會干擾 Vim 原生 ESC 行為。解法:終端機設定 Alt+數字 發送特定逸出序列 <ESC>[{0}N~ (N=1-9,0),Vim 映射該序列:
if !has('gui_running')
noremap <silent><ESC>[{0}1~ :tabnext 1<CR>
...
noremap <silent><ESC>[{0}0~ :tabnext 10<CR>
inoremap <silent><ESC>[{0}1~ <ESC>:tabnext 1<CR>
...
inoremap <silent><ESC>[{0}0~ <ESC>:tabnext 10<CR>
endif
XShell/SecureCRT/iTerm2/gnome-terminal 均支援自訂按鍵發送字串。若 Alt+數字 被終端機佔用 (切換分頁),可改映射 Alt+Shift+數字。
Vim 以 timeoutlen (預設 1000ms) 判斷序列是否完整。正常操作中極少連續輸入 ESC [ { 0 },故誤觸機率極低。同理 F1 終端機常送 ESC O P,若離開插入模式後立即輸入 O P 會被判定為 F1,稍等超時即可避免。