在vim键映射中使用变量

时间:2014-11-10 21:52:16

标签: vim

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

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

... and so on.

我可以指定一个映射;

之类的东西
nnoremap <C-x> xgt

其中x取得按下的键的值(可以是1..9)

谢谢。

编辑1:借助Peter Rincker解决方案(尚未完成)

我可以使用这个功能

function gotoTab(num)
   execute "normal" a:num."gt"
endfunction

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

  • 使用for循环并使用:execute创建映射
  • 更多的Vim Way是使用计数7gt7是计数。

使用:for:execute的示例:

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

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

如需更多帮助,请参阅:

:h keycodes
:h map-which-keys
:h :for
:h :exe
:h count
:h v:count
:h range(