在gnome-terminal中,我可以按Alt +(1、2、3等)切换到特定选项卡。我还可以使用Ctrl +(PgUp / PgDn)循环浏览选项卡(虽然不太方便,但是可以重新映射)。

如果我想使用vim选项卡而不是gnome-terminal选项卡,请键入:tabn:tabp非常麻烦。我可以将它们映射到键盘快捷键,但这仍然比直接使用Alt + 4跳到选项卡4方便得多。

是否有更快的方法在vim中切换选项卡?

#1 楼

下一个标签:gt

上一个标签:gT

带编号的标签:nnngt

评论


我知道我可以输入nnn g t,但是我想快速进行输入,即Alt + nnn或Ctrl + nnn。但是gnome-terminal已经使用了Alt + n,并且绑定到Ctrl + n似乎没有任何作用。

–马修
2012年4月11日在2:46



将功能键映射到nnn g t怎么办?例如:map 2gt。问题是通常被GNOME映射到其帮助工具。或者,您可以选择一些在正常模式下不常用的键,例如逗号,然后像这样映射它::map,gt。然后1,将带您到选项卡1、2,选项卡2,依此类推。

–加里约翰
2012年4月11日下午5:00



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

–伊戈尔·斯托帕(Igor Stoppa)
16-2-22在16:14

最后一个制表符::tabl命令(完整格式::tablast)。

–俄罗斯
20 May 25 '17:06



#2 楼

为什么不利用领导者(我的领导者已映射到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>


评论


您需要au TabLeave *让g:lasttab = tabpagenr()才能使c-l工作:stackoverflow.com/questions/2119754/…

– Ciro Santilli郝海东冠状病六四事件法轮功
14-10-16在12:31



我要为gT和gt添加 h / l

–布伦登
16年4月7日在20:13

对于表达的OP需求,我认为这个答案是最合适的。

–阿德里安
20-2-20在11:56

#3 楼

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

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


现在您可以使用Ctrl←左移并按Ctrl →往右走。

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

评论


我认为这是最好的答案。十分方便。我只是在OS X中禁用了这些系统键绑定,以使其独立于系统。

–LéoLéopoldHertz준영
16年5月14日下午5:47

使用箭头键会使您减速。我让他们残疾

–问与学
16年7月19日在5:03

是的,最好的答案!

– Vivandiere
16年9月9日在18:08

可悲的是,“ Ctrl”在vmplayer中给我带来了问题,因此我将键改为“ Backspace”和“ Enter”。

–鲍里斯·达彭(BorisDäppen)
17年7月13日在11:30

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

– 4Z4T4R
17年8月29日在22:52

#4 楼

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

最兼容(对我来说)快速切换选项卡的方法来自Vim Wikia站点。

在您的.vimrc文件中放置:

nnoremap H gT
nnoremap L gt


现在Shift-h(大写) H)和Shift-l(大写L)将在选项卡之间快速切换,并遵循以下惯例:hl对应于普通qwerty键盘上的vim中的左右。

评论


我喜欢这种直观,类似于vim的解决方案。无需箭头键。

–伊万·伊夫科维奇(IvanIvković)
19年4月11日在12:34

我同意。一个非常好的解决方案

– j sad
19年7月16日在18:14

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

–LeOn-韩立
19-10-11的1:41

#5 楼

将它们添加到.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>

评论


是否可以将-映射到最后一个切换选项卡功能。我尝试了nnoremap :exe“ tabn” .g:lasttab 和vnoremap :exe“ tabn” .g:lasttab 没有运气。

– zzeroo
19-09-18在9:16



#6 楼

(不幸的是)vim还使用CtrlPgDn / PgUp循环浏览选项卡。您需要使用maptabn / tabp映射到可用的对象。

#7 楼

如果您使用的是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中。