创建参数化键绑定

创建参数化键绑定

我想要绘制+Ngt-Ngt:tabnext N和 的地图:tabprev N。我可以创建键绑定,例如:

nnoremap <buffer> <silent> +1gt :tabnext 1
nnoremap <buffer> <silent> +2gt :tabnext 2
nnoremap <buffer> <silent> +3gt :tabnext 3
nnoremap <buffer> <silent> +4gt :tabnext 4
nnoremap <buffer> <silent> +5gt :tabnext 5
nnoremap <buffer> <silent> +6gt :tabnext 6
...

但我能做得更好吗? (并不是说我真的想移动“向前 6 个选项卡”,因为这比仅仅输入 慢得多Ngt,但在我看来,提出这个问题以供将来参考是很自然的。)

一个很好的例子是NG跳转到 line 的命令N。我非常怀疑 Vim 在内部为我们可能想要跳转到的每一行添加了单独的键绑定。

答案1

是的,你可以做得更好:

nnoremap <silent> gt @=":tabnext\n"<CR>

然后6gt将向前移动 6 个制表符等。使用表达式寄存器=是使地图可通过数字前缀重复的技巧。

旁注:您还可以通过将 Vim 相关问题发布到自己的问题中来做得更好。 :)

相关内容