2010-01-05 80 views
54

我试图从VIM中的选项卡切换到另一个选项卡(它可能与前一选项卡不相邻)。是否有任何快捷方式,就像我们按Ctrl - p/按Ctrl - ñ切换到相邻的标签?切换到VIM中的特定选项卡

另外,我试图编写一个键映射,它将给一个变量作为函数的输入并执行操作。例如,假设我按Ctrl - 并且函数(由用户编写)将被调用并作为输入5给出,并且光标将转到标签5(如果有任何第五个标签打开)。

你可以请建议如何做到这一点?

+0

这应该被分成两个单独的问题,所以你可以接受两个不同的问题的两个单独的答案。 – 2010-01-05 10:05:36

+0

@James,要知道这是否有两个问题,应该知道是否存在切换到第N个选项卡的内置函数。 ;-) – 2010-01-05 10:16:23

+0

感谢您的所有答案。但是,如何编写一个接受变量输入的函数。 写 nmap的TT :执行tabnew 似乎很容易 但如何绑定:执行tabnew x(其中x是变量)一键可以做什么? – Sumit 2010-01-05 10:22:32

回答

77

使用5gt切换到片5

:tabn [EXT] {COUNT}

{计数} GT

转到标签页{计数}。第一个标签页有第一个。

你也可以把它绑定到一个键:

:map <C-5> 5gt 
:imap <C-5> <C-O>5gt 

(映射Ctrl-<number>可能是不同的/不可能针对一些终端考虑Alt-<number>即可。)

+4

是**非常**谨慎不要混淆':tabnext'和'tabNext' – puk 2012-03-01 06:50:37

+0

有什么区别...? – dmonopoly 2013-06-27 03:15:30

+3

':tabnext' =下一个标签; ':tabNext' =上一个标签 – 2013-07-02 04:13:08

17

应对只有你的第一个问题,并引述 in vim:

{count}gt  Go to tab page {count}. The first tab page has number one. 
{count}gT  Go {count} tab pages back. Wraps around from the first one 
       to the last one. 

即,打字3gt转到第三个选项卡,3gT从当前选项卡返回3个选项卡。

+1

不完全。 3gt移动到第三个标签,而不是3个标签向前 – 2010-01-05 10:11:20

+0

urgh。这真糟糕。 – 2010-01-05 10:14:27

+0

要让'3gt'移动到第三个标签,请执行'nnoremap gt:normal! gt ' – rampion 2016-08-11 15:09:11

2

只是为了共享键映射直接跳转到特定的选项卡。请将它们放入_vimrc并使其工作。

" Jump to particular tab directly 
"NORMAL mode bindings for gvim 
noremap <unique> <M-1> 1gt 
noremap <unique> <M-2> 2gt 
noremap <unique> <M-3> 3gt 
noremap <unique> <M-4> 4gt 
noremap <unique> <M-5> 5gt 
noremap <unique> <M-6> 6gt 
noremap <unique> <M-7> 7gt 
noremap <unique> <M-8> 8gt 
noremap <unique> <M-9> 9gt 
noremap <unique> <M-0> 10gt 

"INSERT mode bindings for gvim 
inoremap <unique> <M-1> <C-O>1gt 
inoremap <unique> <M-2> <C-O>2gt 
inoremap <unique> <M-3> <C-O>3gt 
inoremap <unique> <M-4> <C-O>4gt 
inoremap <unique> <M-5> <C-O>5gt 
inoremap <unique> <M-6> <C-O>6gt 
inoremap <unique> <M-7> <C-O>7gt 
inoremap <unique> <M-8> <C-O>8gt 
inoremap <unique> <M-9> <C-O>9gt 
inoremap <unique> <M-0> <C-O>10gt