使用 :help + 命令查看 + 的含义如下:

+ Matches 1 or more of the preceding atom, as many as possible.

使用 :help /* 命令查看在模式匹配中 * 的含义如下:

* (use * when 'magic' is not set)

Matches 0 or more of the preceding atom, as many as possible.

删除空白行

空白行指的是看起来没有内容的行,但实际上可能会有空格、Tab字符,或者行末的换行符。针对下面几种情况,需要用不同的命令来删除空白行:

删除只有一个换行符的空行

删除包含空白字符的空白行,但不删除只有一个换行符的空行

删除包含空白字符的空白行和只有一个换行符的空行

删除只有一个换行符的空行

在 vim 中,可以使用 :%g/^$/d 命令来删除只有一个换行符的空行。这里的 ^ 表示匹配行首,$ 表示匹配行末,在行首和行末之间没有任何字符,也就是空行。严格来说,这里说的“行末”指的是最后一个换行符前面的一个字符,不包括换行符自身。“空行” 实际上还是包含有一个换行符。

假设文件中有如下的内容:

abcd

efg

hijk

lmn

opqrst

那么执行 :%g/^$/d 命令后的内容如下:

abcd

efg

hijk

lmn

opqrst

可以看到,中间的空行都被删除了。

删除包含空白字符的空白行,但不删除只有一个换行符的空行

有一些空白行看起来没有内容,但可能会包含空格、Tab字符等空白字符,这些行用 :%g/^$/d 命令无法删除,^$ 匹配不到包含空白字符的情况。

可以用 :%g/^s+$/d 命令来删除这些空白行,但不删除只有一个换行符的空行。

这里的 s 表示匹配一个空白字符,+ 表示匹配一个或连续多个跟在它前面的上一个字符,s+ 至少匹配一个空白字符,换行符不属于空白字符,所以不匹配只有一个换行符的情况。

删除包含空白字符的空白行和只有一个换行符的空行

可以使用 :%g/^s*$/d 命令来同时删除包含空白字符的空白行和只有一个换行符的空行。

这里的 * 表示匹配零个或连续多个跟在它前面的上一个字符。对 ^s*$ 模式来说,匹配零个空白字符的情况,就相当于 ^$ 模式,也就是匹配只有一个换行符的空行,所以这个命令可以删除只有一个换行符的空行。

linux删除每行首字符,vim技巧:删除行首、行末的空白字符,删除空白行相关推荐

  1. 删除桌面计算机,电脑设置小技巧(多余壁纸、屏保删除方法)

    1.电脑桌面壁纸的删除方法 XP系统进入C:\WINDOWS\Web\Wallpaper...把里面不要的图片删除,就行了. 右键点击桌面-属性-背景-点你不要的那个背景壁纸-点击浏览(可以看见你不要 ...

  2. VIM技巧:显示行号

    在vi的命令模式下输入":set nu",就有行号了,取消行号输入":set nonu". 命令只对当前文档有效,如果想使vi打开文档时默认显示行号,可以修改v ...

  3. java实现从头部及尾部删除指定长度字符

    程序 运行结果 程序 package util;import java.math.BigDecimal; import java.text.DecimalFormat; /* * 合肥工业大学 管理学 ...

  4. Linux新手生存笔记[2]——vim训练稿

    回到全局目录 word转成html再搞到csdn这块,效果不是很好,表格每行显示太高........囧 ---------------------------- VIM命令训练稿 目录 1.打开文件操 ...

  5. IDEA跳至行首行末快捷键

    shift + 数字键盘: Shift + 7调到一行的行首 Shift + 1:调制一行的行末 Shift + 9:调制全篇开头 Shift + 3:调制全篇结尾

  6. vim 删除重复部分的行 vim 技巧

    随笔 - 65, 文章 - 139, 评论 - 0, 引用 - 0 vim 删除重复部分的行 vim 技巧 g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d 重复的部分 ...

  7. Linux之vim全选、全部复制、全部删除

    Linux之vim全选.全部复制.全部删除 全选(高亮显示):按esc后,然后ggvG或者ggVG 全部复制:按esc后,然后ggyG 全部删除:按esc后,然后dG

  8. Linux之vim全选,全部复制,全部删除

    Vim中如何全选并复制? (区分大小写!!!) 全部删除:按esc键后,先按gg(到达顶部),然后dG 全部复制:按esc键后,先按gg,然后ggyG 全选高亮显示:按esc键后,先按gg,然后ggv ...

  9. 原创-linux下编译器vi、vim的使用技巧

    玩了三年linux,把最最常用的vim编译器的一些使用技巧整理了下分享给大家. linux下的文本编辑器vi=VIsual: vim(vi improved) vi 模式化编译器分为三个模式: 输入模 ...

最新文章

  1. Verilog中可综合与不可综合的语句
  2. 车联网大数据框架_FEV:基于最新网关技术管理车联网大数据
  3. 【luogu】 P1880 石子合并
  4. spark的Web UI查看DAG的两种方式
  5. 用Vue.js开发微信小程序:开源框架mpvue解析
  6. bash实现自动补全
  7. 【XSY2732】Decalcomania 可持久化线段树 分治
  8. 【TSP问题】基于禁忌搜索算法求解旅行商问题Matlab源码
  9. 战场地图上的 Faked Shadow 基本实现
  10. 10大主流压力/负载/性能测试工具推荐
  11. 国开本科计算机应用基础操作题,新版国家开放大学中央电大本科计算机应用基础操作题题库...
  12. java配置ehcache_配置和使用Ehcache
  13. 织梦图集php,织梦怎么为新图集页面增加图片下载功能
  14. 工业企业如何转型与升级?2022年我国6部门联合出台《工业能效提升行动计划》具体申报条件及认定好处如下
  15. 记录下server的配置
  16. Android CE DE加密小结
  17. MySQL insert ignore/ update ignore 不只用来忽略id重复
  18. 常见的几种运动控制方案!
  19. myeclipse 做移动开发
  20. HDU - 6333 Harvest of Apples (莫队)

热门文章

  1. C++获取电脑主板唯一标识
  2. Cobalt Strike Beacon 初探
  3. java new jsonparser_JsonParser is deprecated
  4. 汇编:寄存器的寻址方式
  5. 机器学习:最大熵模型
  6. leetcode 台阶_leetcode-爬楼梯(动态规划)
  7. Oracle 数据库学习
  8. linux 用户和组详解
  9. 通过movie_id来查询数据库获取电影名字和平均得分
  10. MapReduce教程(01)- 初识MapReduce