[英]Vim: Using v:count1 as argument of a mapping
我有一个如下所示的映射,用于将光标移动到表中输入/更新(红色圆圈)区域的第一列。 如果需要,我可以键入w
或ww
以转到第 2/3 列。
noremap <s-F8> 0f\|ew
它去锚|
首先,到绿色数字的末尾,然后移动到下表中的下一个单词(可以是点、数字或表达式),如下所示。
我想知道我是否可以使用正常模式命令前面给出的计数直接到达第二列或第三列,使用命令2<s-F8>
或3<s-F8>
。
以下代码不起作用,但@=
有助于将计数与0
命令分开。
noremap <s-F8> @='0f\|ew'<cr>
我在Mapping with v:count in vim中研究了 Karkat 的答案并做了这个映射:
noremap <expr> <s-F8> '0f\|e' . v:count1 . 'W'
但如果给出计数,它不会移动。 (如果没有计数,它会移动到第 1 列。)
在这样的映射中使用v:count1
的正确方法是什么?
使用:execute STRING
命令在字符串中包含v:count1
:
noremap <silent> <s-F8> :<c-u>exe 'norm 0f\|e' . v:count1 . 'W'<cr>
注意: CTRL-U 用于删除 Vim 可能插入的范围。
对于您的<expr>
版本,您需要一个<esc>
来帮助取消计数(类似于 CTRL-U 所做的):
noremap <silent> <expr> <s-F8> '<esc>0f\|e' . v:count1 . 'W'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.