在vim中,如何快速在标签之间切换?


125

在侏儒末端,我可以只按Alt+( ,,1 等)切换到特定的标签。我还可以使用+(/ )在选项卡之间循环(虽然不太方便,但是可以重新映射它)。23CtrlPgUpPgDn

如果我想使用vim的标签,而不是GNOME终端选项卡,打字:tabn:tabp是相当繁琐的。我可以将它们映射到键盘快捷键,但这仍然比直接使用Alt+ 跳转到选项卡4方便得多4

有没有在vim中的选项卡之间切换的更快方法?

Answers:


209

下一个标签: gt

优先标签: gT

编号标签: nnngt


1
我知道,我可以输入nnn g t,但我想这样做,即Alt + nnnCtrl + nnn。但是Alt + n已经被gnome-terminal接受了,并且绑定Ctrl + n似乎没有任何作用。
马修

6
将功能键映射到nnn g t什么呢?例如:map <F2> 2gt<F1>GNOME通常将问题映射到其帮助工具。或者你可以选择你没有在正常模式下经常使用的一些关键,说逗号,并将其映射这样的::map , gt。然后1,将带您到选项卡1,2,到选项卡2,依此类推。
garyjohn

2
我发现使用'<'和'>'非常方便
Igor Stoppa

向下滚动一个更好的答案..
该Vivandiere

41

为什么不利用您的领导者(我的领导者映射到Space):

" Go to tab by number
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<cr>

您可以使用以下设置在当前和上一个活动标签之间切换(此处已映射到Ctrl+ L,即<c-l>):

" Go to last active tab

au TabLeave * let g:lasttab = tabpagenr()
nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>
vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>

2
你需要au TabLeave * let g:lasttab = tabpagenr()c-l工作:stackoverflow.com/questions/2119754/...
西罗桑蒂利新疆改造中心法轮功六四事件

1
我想补充<leader>h/lgTgt
布兰登·

24

这是我发现的最简单的方法,可以更快,更简单地在选项卡之间切换。
在.vimrc中添加下一行,并在此处享受有关vim选项卡的更多技巧。

nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>

现在您可以使用Ctrl 向左走和Ctrl 向右走。

或者只是使用:
1gt转到选项卡一,
2gt转到选项卡二,
3gt转到选项卡三,依此类推...现在您有了主意。


我认为这是最好的答案。十分方便。我只是禁用了OS X中的这些系统键绑定,以使其独立于系统。
莱奥波德·赫兹(LéoLéopoldHertz),2016年

1
使用箭头键会使您减速。我让他们禁用了
询问和学习

是的,最好的答案!
The Vivandiere's

可悲的是,“ Ctrl”在vmplayer中给我带来了问题,因此我更改为键“ Backspace”和“ Enter”。
鲍里斯·达彭(BorisDäppen)'17年

Mac用户:您可能需要禁用默认的“任务控制”空格键盘快捷键:stackoverflow.com/questions/15719135/…–
azatar

15

因为我在Mac上而不使用MacVim(但在终端中使用普通的vim),所以在组合键无法发送到终端时遇到了一些困难。

快速切换选项卡的最兼容(对我来说,我最舒适)的方法来自Vim Wikia网站

放在.vimrc文件中:

nnoremap H gT
nnoremap L gt

现在,Shift-h(大写的H)和Shift-l(大写L)就会快速切换你的选项卡之间,并且遵循该公约h,并l对应于左,右一个普通的QWERTY键盘上的活力。


我喜欢这种直观,类似于vim的解决方案。无需箭头键。
伊万·伊夫科维奇

我同意。一个非常好的解决方案
感到悲伤

这确实是一个直观的解决方案。谢谢!
LeOn-韩立


2

如果您使用的是gvim或类似的东西(即终端之外的东西),则可以模仿gnome-terminal您描述的行为:

" Map alt-x keys to jump to a tab
for i in range(1, 8)
  execute "nmap \<M-" . i . "> " . i . "gt"
endfor
nmap <M-9> :tablast<CR>

因此,alt-1跳到第一个选项卡,alt-9依此类推。但是跳到最后一个选项卡(如Chrome)。

您可能希望将其包装if has("gui_running")(尽管Neovim似乎不起作用),或将其放入.gvimrc


2

将这些添加到.vimrc以启用选项卡导航热键:

<ctrl-l> 在2个最新标签之间切换;

<ctrl-j/k> 转到最后一个/下一个选项卡;

<ctrl-t> 打开一个新标签。

" tab navigation: Alt or Ctrl+Shift may not work in terminal: " http://vim.wikia.com/wiki/Alternative_tab_navigation " Tab navigation like Firefox: only 'open new tab' works in terminal nnoremap <C-t> :tabnew<CR> inoremap <C-t> <Esc>:tabnew<CR> " move to the previous/next tabpage. nnoremap <C-j> gT nnoremap <C-k> gt " Go to last active tab au TabLeave * let g:lasttab = tabpagenr() nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr> vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>


是否可以将<Ctrl>-<Tab>映射到最后一个切换选项卡功能。我试过了nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>没有运气。
zzeroo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.