在vim键映射中使用变量

在vim键映射中使用变量,vim,Vim,在vim中映射键时如何使用变量?我试图解决的具体问题如下。我需要这些关键映射: nnoremap <C-1> 1gt nnoremap <C-2> 2gt nnoremap <C-3> 3gt ... and so on. 如果我:调用goToTab(3),它将转到选项卡3 如何将Command-x(D-x)映射到goToTab(x),其中x介于1到9之间。如何从Command-x按键读取数字?我得到了坏消息。您不能映射等。您只能绑定,我不会这么做,因为它

在vim中映射键时如何使用变量?我试图解决的具体问题如下。我需要这些关键映射:

nnoremap <C-1> 1gt
nnoremap <C-2> 2gt
nnoremap <C-3> 3gt

... and so on.
如果我
:调用goToTab(3)
,它将转到选项卡3


如何将Command-x(D-x)映射到goToTab(x),其中x介于1到9之间。如何从Command-x按键读取数字?

我得到了坏消息。您不能映射
等。您只能绑定
,我不会这么做,因为它非常方便

看起来您正在执行一个以选项卡为中心的工作流。我知道这听起来可能很奇怪,但可能使用更少的选项卡窗格和更多的缓冲区。以下是一些关于它的好帖子:

。。。好的,但我真的想做这个变量映射的事情。您可以选择:

  • 使用for循环并使用
    :执行
    创建映射
  • Vim的更多方法是使用计数,因此
    7gt
    7
    是计数
使用
:for
:execute
的示例:

for i in range(1, 9)
  execute "nnoremap \<d-" . i . "> " . i . "gt"
endfor

感谢您提供有关缓冲区的信息。我是vim的新手,甚至不知道他们。虽然我将阅读并查找缓冲区,但为了学习Vim,我想尝试并实现上述功能(比如使用命令键而不是控制键)。请看我上面编辑的消息。由于您的其他指示,我离解决方案又近了一步。你或有人能帮我下一步(或解决方案)吗。谢谢那么,可以尝试使用alt映射而不是ctrl映射。我将使用for循环。@Ben如何读取数字(无论是Alt还是Command)作为循环或函数调用的输入?我想举个例子。我认为for循环将不起作用,因为它将从当前选项卡开始计数。这不是说2gt的功能。谢谢。看起来像是添加了一个示例。它不会从当前选项卡开始计数,而且这不是
2gt
将要做的
2gt
将始终转到第二个选项卡页,从最左边的选项卡开始,无论您在哪个选项卡上。如果希望从当前选项卡计算,可以使用表达式寄存器。更改您的
:execute
行如下所示:
执行“nnoremap\”。我“@='gt'\”
。有关更多信息,请参见
:h@
:h@=
,以及本集:
function gotoTab(num)
   execute "normal" a:num."gt"
endfunction
for i in range(1, 9)
  execute "nnoremap \<d-" . i . "> " . i . "gt"
endfor
:h keycodes
:h map-which-keys
:h :for
:h :exe
:h count
:h v:count
:h range(