【听歌】Vim下删除空白行的4种实用技巧

写在前面:技术博主在线唱歌,哈哈哈。今天打算去大学城参观下,感受下清华北大的南国风光。各位小伙伴,周末好~

删除文件空白行是使用编辑器时经常遇到的一种需求场景。

如何在Vim中通过Vim命令快速删除文件中的所有空白行呢?Vim教程网(https://vimjc.com)总结了以下4种Vim删除空行的方法。

1. 使用 global 命令删除空白行

Vim命令行模式下的 global 命令会在指定的范围内,标记所有匹配 pattern 的文本行,并对匹配的行上逐行执行 Ex 命令。

匹配空白行的正则表达式可以用 ^\s*$ 表示 ( ^ 表示行首, $ 表示行尾, \s 表示任何空白字符,包括空格、制表符、换页符等, * 表示匹配零次或多次)。

因此,使用 global 命令删除Vim打开文件中所有空白行的命令为 :g/^\s*$/d

2. 使用 vglobal 命令删除空行

Vim 命令行模式下的 :vglobal 命令 (简写形式 :v) 用于执行与 global 命令完全相反的操作。

而正则表达式中, . 用于匹配除换行符 \n 外的任何单字符。

因此,除了上述介绍的使用 global 命令删除空白行外,还可以使用 :v/./d 命令删除Vim当前打开文件中的所有空白行。

使用上述命令删除空白行后,会高亮当前文件中剩下的所有内容,可以使用 :nohl取消本次的搜索高亮结果。

:方法2与方法1的基本原理完全相同,只是两种不同的处理思路。为了突出 vglobal 命令的实用性,特独立为一种方法。

3. 执行 shell 命令删除空行

Linux系统下存在不少使用 shell 命令删除文件空白行的方法。例如, cat-s test.txt 可将 test.txt 文件中的连续空白行替换为一个空白行。而 grep-v'^\s*$'test.txt 命令可用于过滤 test.txt 文件中的所有空白行。

Vim教程网之前有文章介绍过,可以在Vim命令行模式下执行 shell 命令。

因此,可以在Vim命令行模式下执行 :%!grep-v'^\s*$' 命令来删除Vim当前打开文件中的所有空白行。

:符号 % 代表当前文件的完整路径。

4. 使用替换命令substitute删除空白行

Vim命令行模式下的 :substitute 命令 (缩写形式 :s) 可以将指定的字符替换成其他目标字符,其命令格式为 :[range]s/源字符串/目标字符串/[option]

删除空白行可以理解为一种替换类型的操作。为了在全文范围内替换(删除)所有空白行,可以使用 :%s/^\s*$\n//g 命令。

问题:为什么在文件中执行 :%s/^\s*$\n//g 命令时,最后一个空白行没被删除呢?

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值