![Vim 标记和宏](https://linux22.com/image/16924/Vim%20%E6%A0%87%E8%AE%B0%E5%92%8C%E5%AE%8F.png)
有没有办法让宏运行达到标记?我知道如果我这样做,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每次执行时可能并不总是向下移动一行(考虑使用搜索而不是j
or来移动的“宏” k
:它需要更高的计数才能完全处理具有多个匹配项的行)。
答案2
一种解决方案是将宏设置为假设并对当前选择进行操作,然后在运行之前选择要操作的文件部分。