在vim键映射中使用变量

Cur*_*arn 3 vim

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

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

... and so on.
Run Code Online (Sandbox Code Playgroud)

我可以指定一个映射; 就像是

nnoremap <C-x> xgt
Run Code Online (Sandbox Code Playgroud)

其中x取压键的值(可以是1..9)

谢谢.

编辑1:由于Peter Rincker,解决方案(尚未完成)

我可以使用这个功能

function gotoTab(num)
   execute "normal" a:num."gt"
endfunction
Run Code Online (Sandbox Code Playgroud)

如果我:call goToTab(3),它会转到标签3.

如何将Command-x(Dx)映射到goToTab(x),其中x介于1..9之间.如何从Command-x印刷机读取数字?

Pet*_*ker 5

我得到了坏消息.你不能映射<c-1>等.你只能绑定<c-6>我不会做的,因为它非常方便.

您似乎正在进行以标签为中心的工作流程.我知道这可能听起来很奇怪,但可能会使用较少的选项卡窗格和更多缓冲区.这里有一些关于它的好帖子:

...好吧,但我真的想做这个变量映射的事情.你有选择:

  • 使用for循环并使用它:execute来创建映射
  • Vim Way越是使用计数7gt.这7是计数.

使用:for和的示例:execute:

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

注意:这使用<d-...>Command的语法,该语法仅在MacVim上可用且没有终端支持(请参阅参考资料:h <D-).您可以使用<a-...>Alt.但是我必须警告你在终端上使用Alt可能会很棘手.

有关更多帮助请参阅:

:h keycodes
:h map-which-keys
:h :for
:h :exe
:h count
:h v:count
:h range(
Run Code Online (Sandbox Code Playgroud)