转到 `===` 的末尾但不包括 `$`

转到 `===` 的末尾但不包括 `$`

考虑以下示例行:

$some ==thing();
$some == thing();

$some ==$thing;
$some == $thing;

我正在编写一个宏来改进这些行。当光标位于 之后的空格上时$some,如果最后一个 = 符号后面没有空格,我想添加一个空格。该命令将光标移到和字符e的末尾。也就是说,对于字符串、,然后将光标移到最后一个字符。但是,对于字符串、,然后将光标移到字符。因此,我不能依赖 或来在字符后正确插入空格。=$======e==$thing==$thing===$thinge$ia=

如何才能可靠地将光标移动到最后一个相关=字符?=请注意,该行后面可能还有其他字符。

答案1

除了使用e动作命令之外,您还可以搜索字符串的结尾=

/=\+/e

(如果您希望转义文字=而不是元字符+,那么您可以使用/\v\=+/e。)

答案2

您所描述的行为是因为=$均未配置为关键字字符,因此e运动会在两个实例上移动。要获得所需的效果,请通过以下方式更改关键字定义(暂时?)

:setlocal iskeyword+=$

请注意,我宁愿用命令而不是明确的动作来解决这个问题:substitute,因为您可以使用正则表达式更好地表达所需修改的位置。

相关内容