我想要绘制+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 相关问题发布到自己的问题中来做得更好家。 :)