说起 Linux 下的高效率编辑器,绝对少不了 vi / vim 这样灭霸级别的效率产品,无论是编辑文档、写 shell 脚本,还是 coding ,熟练使用 vi / vim 可以让你在 Linux 实现飞一般的工作效率。

今天学习 Kubernetes 时,从网上找到一份创建 Pod 的 Yaml 配置文件,拷贝到文件后,复制的内容不仅包含很多空行,还包括很多注释行,身患强迫症的我,简直无法忍受。

于是乎,程序员的惯性思维起作用了:

  1. 不怕问题多,就怕没问题(不怕报错信息多,就怕没报错)
  2. 问题来了,盘它,解决它

文章精华

此处先汇总所有命令,如果能秒懂或不需要深入了解,看到这里就已获得本文精华。

# 1. 删除空行:g/^$/d# 2. 删除只包含空白字符(空格/回车/Tab制表符)的行:g/^s*$/d# 3. 删除以 # 或 空格# 或 tab# 开头的行:g/^s*#/d# 4. 如果当前行包含 hello,则删除当前行:/hello/d# 5. 删除从第二行到包含 hello 的区间行:2,/hello/d# 6. 删除从包含 hello 的行到最后一行区间的行:/hello/,$d# 7. 删除所有包含 hello 的行:g/hello/d# 8. 删除匹配 hello 且前面只有一个字符的行:g/.hello/d# 9. 删除匹配 hello 且以它开头的行:g/^hello/d# 10. 删除匹配 hello 且以它结尾的行:g/hello$/d# 11. 删除 # 之后所有字符串%s/#.*//g

工欲善其事必先利其器

为了演示方便,我准备了文本内容:

# this is a commentThis is a vim demo.# this is a empty line# this is a blank line# this is a tab line# this is a normal linehello vim, Haha, laugh for ever# this is what I want to say to youThe best time to plant a tree was 20 years ago. The second best time is now.# this is othersHellohello worldwhat is helloworld

其中,空白行包括了空格、换行、Tab制表符等内容,在 vim 命令模式下可以通过命令 :set list 显示所有空白字符,"^I" 代表 Tab 制表符,“$” 代表换行符。

示例文本内容,设置 vim 显示空白字符

删除空行或注释操作的本质:查找替换命令

在 vim 删除空行、删除注释的操作本质是查找替换命令,执行逻辑:

  1. 先使用正则表达式匹配目标行
  2. 再对目标行进行相应操作,比如删除操作(d)

全局查找替换命令语法格式

[addr]s/源字符串/目的字符串/[option][addr] 表示检索范围,省略时表示当前行。(1)“1,20” 表示从第1行到20行;(2)“%”       表示整个文件,同“1,$”;(3)“. ,$”     表示从当前行到文件尾;s : 表示替换操作[option] : 表示操作类型,常见:(1)g 表示全局替换; (2)c 表示进行确认(3)d 表示进行删除(4)p 表示替代结果逐行显示(Ctrl + L恢复屏幕);注意事项:(1)省略option时仅对每行第一个匹配串进行替换;(2)如果在源字符串和目的字符串中出现特殊字符,需要用””转义

以【删除只包含空白字符(空格/回车/Tab制表符)的行】为例,拆解一下命令进行说明:

# 删除只包含空白字符(空格/回车/Tab制表符)的行:g/^s*$/d# 命令拆解:# g - 表示全局范围操作# /d - 表示删除操作# /^s*$  - 表示查找只包含空白字符(s)的行

删除前后效果对比:

删除前

删除后

最后再总结

删除空行、删除注释行的操作逻辑本质是查找替换命令,执行逻辑:

  1. 先根据正则表达式匹配到目标行
  2. 再对目标行进行相应操作,比如删除(d)

全局替换命令语法格式:[addr]s/源字符串/目的字符串/[option]

参考引用

本文内容参考自以下资料,感谢这些资料作者的辛苦付出。

  1. https://www.cnblogs.com/jingxin168/p/11213638.html
  2. https://www.cnblogs.com/hugetong/archive/2004/01/13/7233723.html
  3. https://www.cnblogs.com/carbon3/p/5915282.html
  4. https://blog.csdn.net/cbaln0/article/details/87979056
  5. https://blog.51cto.com/andyss/131652

笔记虽小,希望对你有帮助,感谢你的阅读。

关键词:Linux CentOS Vi Vim 正则表达式 查找 替换 删除空行 删除注释

vim 全局替换_高效操作:vim 快速删除空行和注释相关推荐

  1. vim 全局替换_有一说一,Intellij IDEA 自带的 Vim 插件真心不错!

    作者:kidneyball 链接:iteye.com/blog/kidneyball-1828427 在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结 ...

  2. Linux—vi/vim全局替换

    vim全局替换   在linux系统中编辑文件或者配置时,常常会用到全局替换功能. 语法格式 :%s/oldWords/newWords/g 其中,oldWords为替换前的值:newWords为替换 ...

  3. 计算机Word如何删空行,Word如何使用宏快速删除空行

    许多普通用户对于Word里的宏工具不熟悉,利用宏可以实现很多功能.宏的概念其实很简单,就是把一件事从头到尾的操作过程录制下来,作为一个动作,并且指定一个快捷键.当我们需要做这件事的时候,只需按快捷键就 ...

  4. excel快速删除空行

    快速删除空行 技巧:全选表格,按ctrl+g定位条件选择"空值",直接右键删除,下方单元格上移

  5. vscode vim 分组替换_写给 VS Code 用户的 Vim 入坑指南

    本文授权转载自原作者, 未经许可请勿转载 现实当中使用 Vim 来写前端的人是少之又少,大多数人基本上都是使用 VSCode.但作为「编辑器之神」,不管使不使用 Vim 进行编码,学习 Vim 的编辑 ...

  6. Vi/Vim全局替换基本语法

    在vim编辑中,编辑器使用指定的字符模式对文件中的每行进行检查,使用新字符串来替换模式. 全局替换使用命令 :g(global全局)和:s(switch替换). 单个字符替换: :s/old/new/ ...

  7. CentOS vim 全局替换命令

    语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:"1,20" ...

  8. Linux vim全局替换方法

    Linux命令:vi全局替换方法 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr]: 表示检索范围,省略时表示当前行. ...

  9. vim插件安装_如何安装Vim插件

    vim插件安装 尽管Vim快速高效,但默认情况下,它只是一个文本编辑器. 至少,这就是没有插件的情况,插件基于Vim并添加了额外的功能,使其不仅具有键入文本的窗口,还具有更多的功能. 正确搭配各种插件 ...

最新文章

  1. 45个超实用的JavaScript技巧及最佳实践(一)
  2. c-nominated = ((rcheck-use_candidate) || c-nominated);
  3. js中,(function(){})()的用法解析
  4. 10.14.1-linux设置时间等
  5. html用bmob做留言,bmob js-sdk 在vue中的使用教程
  6. 亚马逊Rekognition发布针对人脸检测、分析和识别功能的多项更新
  7. POJ2560-雀斑(Freckles)【图论,并查集,最小生成树,KURUSKAL】
  8. MySQL concat()函数
  9. append从一个添加到另一_麻城一总投资1.5亿项目开工建设,另一项目预计9月底开工,还有一个年产值14亿的5G项目快速推进中...
  10. AI一周热闻:北大建立人工智能新校区;英国首例机器人心脏手术致死
  11. 各国“未雨绸缪”致网络安全陷入困境 安全防御诱发“防御性入侵”
  12. python 如何检验数据正态分布_小样本数据的正态性检验用python怎么写?
  13. Python基于WPA/WPA2 密码字典,实现 wifi 密码暴力破解
  14. ue4蓝图运行顺序_UE4蓝图流程控制
  15. 转发 微博 Qzone 微信 草根创业英雄时代落幕:贾跃亭戴威们一去不复返
  16. C语言数组比较相等memcmp,C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别...
  17. Unitek的USB3.0 TF卡读卡器
  18. Service(服务)之 Local Service(本地服务)
  19. 石器时代地图->魔力宝贝地图
  20. Java实现生成csv文件并导入数据

热门文章

  1. java 中缀算术表达式转换成后缀表达式_求Java堆栈,将中缀算术表达式转换成后缀表达式。...
  2. 安装提示没有安装包docker(转载)
  3. 为别人着想的表达才是最好的表达
  4. Jsp+Ssh+Mysql实现简单的校园实习兼职管理
  5. SQL数据库语言基础之SqlServer视图的创建、修改与视图数据的增删改查
  6. iosession在linux下拒绝链接,iosession 关闭
  7. python数据库实现注册函数_10.注册和登录功能实现(3)—— 注册数据写入数据库...
  8. 存储端显示主机链路降级_【计算机网络】你真的理解数据链路层吗?
  9. Error: Cannot find module ‘node-sass‘---Node-sass下载
  10. Node.js下载安装及各种npm、nvm、nrm配置(保姆式教程---提供全套安装包)---node.js的安装与配置(1)