vim 全局替换_高效操作:vim 快速删除空行和注释
说起 Linux 下的高效率编辑器,绝对少不了 vi / vim 这样灭霸级别的效率产品,无论是编辑文档、写 shell 脚本,还是 coding ,熟练使用 vi / vim 可以让你在 Linux 实现飞一般的工作效率。
今天学习 Kubernetes 时,从网上找到一份创建 Pod 的 Yaml 配置文件,拷贝到文件后,复制的内容不仅包含很多空行,还包括很多注释行,身患强迫症的我,简直无法忍受。
于是乎,程序员的惯性思维起作用了:
- 不怕问题多,就怕没问题(不怕报错信息多,就怕没报错)
- 问题来了,盘它,解决它
文章精华
此处先汇总所有命令,如果能秒懂或不需要深入了解,看到这里就已获得本文精华。
# 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 删除空行、删除注释的操作本质是查找替换命令,执行逻辑:
- 先使用正则表达式匹配目标行
- 再对目标行进行相应操作,比如删除操作(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)的行
删除前后效果对比:
删除前
删除后
最后再总结
删除空行、删除注释行的操作逻辑本质是查找替换命令,执行逻辑:
- 先根据正则表达式匹配到目标行
- 再对目标行进行相应操作,比如删除(d)
全局替换命令语法格式:[addr]s/源字符串/目的字符串/[option]
参考引用
本文内容参考自以下资料,感谢这些资料作者的辛苦付出。
- https://www.cnblogs.com/jingxin168/p/11213638.html
- https://www.cnblogs.com/hugetong/archive/2004/01/13/7233723.html
- https://www.cnblogs.com/carbon3/p/5915282.html
- https://blog.csdn.net/cbaln0/article/details/87979056
- https://blog.51cto.com/andyss/131652
笔记虽小,希望对你有帮助,感谢你的阅读。
关键词:Linux CentOS Vi Vim 正则表达式 查找 替换 删除空行 删除注释
vim 全局替换_高效操作:vim 快速删除空行和注释相关推荐
- vim 全局替换_有一说一,Intellij IDEA 自带的 Vim 插件真心不错!
作者:kidneyball 链接:iteye.com/blog/kidneyball-1828427 在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结 ...
- Linux—vi/vim全局替换
vim全局替换 在linux系统中编辑文件或者配置时,常常会用到全局替换功能. 语法格式 :%s/oldWords/newWords/g 其中,oldWords为替换前的值:newWords为替换 ...
- 计算机Word如何删空行,Word如何使用宏快速删除空行
许多普通用户对于Word里的宏工具不熟悉,利用宏可以实现很多功能.宏的概念其实很简单,就是把一件事从头到尾的操作过程录制下来,作为一个动作,并且指定一个快捷键.当我们需要做这件事的时候,只需按快捷键就 ...
- excel快速删除空行
快速删除空行 技巧:全选表格,按ctrl+g定位条件选择"空值",直接右键删除,下方单元格上移
- vscode vim 分组替换_写给 VS Code 用户的 Vim 入坑指南
本文授权转载自原作者, 未经许可请勿转载 现实当中使用 Vim 来写前端的人是少之又少,大多数人基本上都是使用 VSCode.但作为「编辑器之神」,不管使不使用 Vim 进行编码,学习 Vim 的编辑 ...
- Vi/Vim全局替换基本语法
在vim编辑中,编辑器使用指定的字符模式对文件中的每行进行检查,使用新字符串来替换模式. 全局替换使用命令 :g(global全局)和:s(switch替换). 单个字符替换: :s/old/new/ ...
- CentOS vim 全局替换命令
语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:"1,20" ...
- Linux vim全局替换方法
Linux命令:vi全局替换方法 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr]: 表示检索范围,省略时表示当前行. ...
- vim插件安装_如何安装Vim插件
vim插件安装 尽管Vim快速高效,但默认情况下,它只是一个文本编辑器. 至少,这就是没有插件的情况,插件基于Vim并添加了额外的功能,使其不仅具有键入文本的窗口,还具有更多的功能. 正确搭配各种插件 ...
最新文章
- 45个超实用的JavaScript技巧及最佳实践(一)
- c-nominated = ((rcheck-use_candidate) || c-nominated);
- js中,(function(){})()的用法解析
- 10.14.1-linux设置时间等
- html用bmob做留言,bmob js-sdk 在vue中的使用教程
- 亚马逊Rekognition发布针对人脸检测、分析和识别功能的多项更新
- POJ2560-雀斑(Freckles)【图论,并查集,最小生成树,KURUSKAL】
- MySQL concat()函数
- append从一个添加到另一_麻城一总投资1.5亿项目开工建设,另一项目预计9月底开工,还有一个年产值14亿的5G项目快速推进中...
- AI一周热闻:北大建立人工智能新校区;英国首例机器人心脏手术致死
- 各国“未雨绸缪”致网络安全陷入困境 安全防御诱发“防御性入侵”
- python 如何检验数据正态分布_小样本数据的正态性检验用python怎么写?
- Python基于WPA/WPA2 密码字典,实现 wifi 密码暴力破解
- ue4蓝图运行顺序_UE4蓝图流程控制
- 转发 微博 Qzone 微信 草根创业英雄时代落幕:贾跃亭戴威们一去不复返
- C语言数组比较相等memcmp,C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别...
- Unitek的USB3.0 TF卡读卡器
- Service(服务)之 Local Service(本地服务)
- 石器时代地图->魔力宝贝地图
- Java实现生成csv文件并导入数据
热门文章
- java 中缀算术表达式转换成后缀表达式_求Java堆栈,将中缀算术表达式转换成后缀表达式。...
- 安装提示没有安装包docker(转载)
- 为别人着想的表达才是最好的表达
- Jsp+Ssh+Mysql实现简单的校园实习兼职管理
- SQL数据库语言基础之SqlServer视图的创建、修改与视图数据的增删改查
- iosession在linux下拒绝链接,iosession 关闭
- python数据库实现注册函数_10.注册和登录功能实现(3)—— 注册数据写入数据库...
- 存储端显示主机链路降级_【计算机网络】你真的理解数据链路层吗?
- Error: Cannot find module ‘node-sass‘---Node-sass下载
- Node.js下载安装及各种npm、nvm、nrm配置(保姆式教程---提供全套安装包)---node.js的安装与配置(1)