Q: 怎么快速删除每一行最后一个字符? (怎么录制宏?)
例如一个文件每一行最后一个字符是句号,需要把它们都去掉。
这是一个 ini 类型的配置文件,可以看到每一行的最前面有一个逗号,现在如果需要将每行前面的逗号去掉,怎么办?
如果是对一行进行操作,方法相当简单,$
调到行尾,再按x
删除一个字符,就完成了。
如果要对连续 100 行做这样修改呢?当然这每一行的长度是不一样的,用不了列编辑模式。
这时候需要用到 vim 里面的宏。
所谓宏,在 vim 里面是指某种特定顺序的一系列操作。vim 宏有录制和播放的过程,录制就是你教给 vim 该怎么操作,播放就是 vim 照着你教的进行自动操作。
把光标定位在要修改的第一行;
在 normal 模式下输入
qa
(这里的 a 是指寄存器名称,vim 会把录制好的宏放在这个寄存器中, 所以也可以是qb
,qc
,qd
…)SpaceVim 重用了
q
键,需要输入\qr
来进入录制模式。vim 的命令行会显示“recording @a”的提示,开始输入
$
调到行尾,再按 x 删除,按 j 跳到下一行;normal 模式下输入
q
,结束宏录制。SpaceVim 需要输入
\qr
来进入结束模式。
经过以上步骤, 我们定义了一个存储在寄存器 a 中的宏,它的操作序列是:$
->x
->j
,也就是跳到行尾,删除,跳到下一行。
现在,第一行已经删除了行尾的句号,而且光标也已经在第二行。
这时候如果在 normal 模式下输入@a
,就可以播放我们刚录制好的存在寄存器 a 中的宏,结果是第二行行尾的句号也被删除了,光标停在第三行。
当然不是输入 @a
99 次了,用 vim 的重复命令,输入 99@a
一并把剩下的 99 行都解决了。
Last modified on 2023-11-01