Vim文本编辑器列操作模式

时间:2023-01-26 19:32:47

在日常的编程工作中,经常会遇到需要对文本数据的每一行进行操作的情况,比如加上分号;要是手动添加,实在不是高效率的做法。此时,稍微好点的文本编辑器如Vim都提供列操作模式

如果对于已经对齐的文本,即每一列的文本对应的属性相同,那在一般模式下,按ctrl+v就可以进入列选模式,然后按上下方向键就可以选择单列;还可以按左右键增加列的选区。按esc就可以退出该模式。

对于没有对齐的文本,怎么办呢,首先按ctrl+v进入列选模式,然后用$键跳到行尾,再采用上下方向键选择每一行,直接使用命令A与;,退出插入模式,就可以了。

那么怎么能不用方向键选择所有行呢,于是就需要ggvG这个命令了,完整的命令如下。

首先用ggvG进行全选,然后ctrl+v进入列选模式,然后使用$跳至行尾,使用A加;,退出插入模式,注意空行也会被加入分号的哦。

这样全选有个问题,那就是当我是要在每一列的后面,将;号删掉,就会出问题了,因为实际上这是全选了整个的文本。


那要删除每一列的最后一个字符呢,用这个:1,$s/.$//或者:%s/.$//,叫做正则表达式。其实采用:%s/.$/;/也可以给每一列的末尾加上;,所以还是学习好正则表达式更加方便。

 $代表行末或者最后一行。%表示全文,也可用1,$表示。s表示替换
   /.$//:正则,把最后一个字符替换为空。