Vim 标记和宏

Vim 标记和宏

有没有办法让宏运行达到标记?我知道如果我这样做,5@a我的宏将在 5 行上运行。例子:

set marker with `mc`
record a macro with `qa`
... now what?

显然'c@a只是将光标移动到 c 处的标记。我已经尝试过缓冲区,"b'c但这只是进入标记。我可能错过了一些非常基本的东西或者只是找错了地方。

答案1

你可以试试这个:

:.,'c normal @a

这使用了“远程”:normal命令运行正常模式命令@a,光标连续定位在每行的第一列上,从当前行开始,一直到带有标记的行C。如果标记恰好位于光标上方,则维姆会问你是否愿意反转范围

@a这并不总是与将计数应用于(例如)相同,5@a因为寄存器的内容A每次执行时可能并不总是向下移动一行(考虑使用搜索而不是jor来移动的“宏” k:它需要更高的计数才能完全处理具有多个匹配项的行)。

答案2

一种解决方案是将宏设置为假设并对当前选择进行操作,然后在运行之前选择要操作的文件部分。

相关内容