考虑以下示例行:
$some ==thing();
$some == thing();
$some ==$thing;
$some == $thing;
我正在编写一个宏来改进这些行。当光标位于 之后的空格上时$some
,如果最后一个 = 符号后面没有空格,我想添加一个空格。该命令将光标移到和字符e
的末尾。也就是说,对于字符串、,然后将光标移到最后一个字符。但是,对于字符串、,然后将光标移到字符。因此,我不能依赖 或来在字符后正确插入空格。=
$
=
==
===
e
=
=$thing
==$thing
===$thing
e
$
i
a
=
如何才能可靠地将光标移动到最后一个相关=
字符?=
请注意,该行后面可能还有其他字符。
答案1
除了使用e
动作命令之外,您还可以搜索字符串的结尾=
:
/=\+/e
(如果您希望转义文字=
而不是元字符+
,那么您可以使用/\v\=+/e
。)
答案2
您所描述的行为是因为=
和$
均未配置为关键字字符,因此e
运动会在两个实例上移动。要获得所需的效果,请通过以下方式更改关键字定义(暂时?)
:setlocal iskeyword+=$
请注意,我宁愿用命令而不是明确的动作来解决这个问题:substitute
,因为您可以使用正则表达式更好地表达所需修改的位置。