vim删除行尾多余空格和tab

vim删除行尾多余空格和tab

1. 删除全文行尾tab和空格

底行模式下执行如下命令:
【%s】表示全文替换,【%】表示全文的意思,【#】是分隔符。

%s#\s\+$##g

如果不想进行文中局部内容替换,则修改范围即可,也就是更改命令最前面的【%s】,详细命令见后文。

2. 删除选中部分文字行尾tab和空格

有时候我们可能只需要删除部分选定内容的行尾tab和空格,操作方法是先通过可视模式选中要加工的段落,然后使用替换命令
命令:

1. 先光标定位到某一行
2. shift + v 进入可视模式
3. 移动光标直到选中所有想要替换的段落
4. 冒号,进入底行模式,会出现代码【:'<,'>】,该代码的含义表示当前选中的段落
5. 直接输入第一条命令中的百分号后面的部分:s/\s\+$//g,全部命令格式会变成这样【:'<,'>s/\s\+$//g】
6. 回车即可替换成功

3. 扩展,指定区域替换

替换命令格式原理为:【要替换的区域范围+替换操作】
如前面命令中 :

【%】表示全文

而后半部分

【s/\s\+$//g】
        【左边第一个s】表示替换,
        【s/aaa/bbb/g】三斜杠格式,表示将【左边的aaa】替换为【右边的bbb】,g表示全局
        【\s\+$(即:上句描述的等效于左边的aaa的部分)】表示行尾空格和Tab
        【等效bbb的部分没有内容,即相连的//】表示将上句描述的aaa部分替换为无内容
所以该命令等效于
        【替换命令/行尾空格和tab//g】,即:将行尾空格替换为无内容(也就是删除)。

要表示区域的方法很多,除了全文,可视模式选中外,还有逗号指定行等
下面列出几种以供参考:

3.1 全文aaa替换成bbb

%s/aaa/bbb/g          #匹配所有aaa都会被替换,包括qweraaazxcv这种中间的aaa
或
%s/\<aaa\>/bbb/gc     #替换时全字符匹配aaa,如xyzaaajih中间的aaa就不会被替换,c表示每次替换都询问,输入y确定替换,输入n不替换

3.2 可视模式选中段落进行替换

操作方法不再赘述,见前面第二小节,记得要先进入可视模式选择文本然后替换就行。

'<,'>s/aaa/bbb/gc     #将可视模式选中的文本中的aaa替换为bbb

3.3 按照行指定段落进行局部替换

20,50s/aaa/bbb/gc     #将第20行到50行的aaa替换为bbb

你可能感兴趣的:(Vim,vim)