vim的:s替换功能

vim的替换功能是非常赞的,可以轻松的将全文或者是一段文字内的的特定的字符串替换成另外的字符串,而且是通过正则进行的,就给了替换非常强的扩展空间,不过,通常作为下意识就可以使用的功能来说,一定要非常简单,vim在这个做的非常好。

1.选择模式下

如下图 ,在选择模式下直接按:(冒号)会默认添加出来 '<,'>, 不太清楚什么意思,不过,不能去掉,它的功能是标注出选择的行范围,在这种情况下,不删除 '<,'>   然后输入s/\”/\’就会将8行里面的“全部替换成单引号,注意,是8行全部,即使第一行的第一个双引号没有被选择,也会被替换,这个是要注意的

如果删除了 '<,'>  结果是之后被选择的第一行内容被替换了,就是下面行里面的 "<div class="row">被替换,其他被选择的行没有任何影响,这要注意

 

2.全文替换

如果是想全文,整个buffer内的替换,就可以:%s/”/’ 来完成,非常容易

3.上下文替换

首先要说的是,vim有一个非常好的插件,叫做numbers.vim ,可以标注出当前行,具体上下行的具体差距,然后配合number + j/k是非常好用的,具体演示效果如下

可以看到,当前行是21行,具体templateObj有11行,在正常模式下(不确定当前什么模式,直接按esc就是normal模式了)11k就可以直接跳转到上面的第11行了,非常方便,

如下命令 :21,+6s/\"/\' 可以实现,21行及其向下6行内的双引号替换成单引号,:21,6+s/\"/\' 则可以实现21行及其向上6行内的双引号替换成单引号,注意两者的差别,仅仅是一个+好的位置不同而已。

还有一种方式,也可以实现上下文的引号替换,命令如下 :.,.+6s/\"/\' 注意,这里有相对坐标的概念, 点号 .表示光标所在行.+6表示光标所在行的向下六行,同理.6+应该是表示光标所在行的向上六行,通过相对坐标实现双引号和单引号的替换

Leave a comment

Your email address will not be published.

*