17

Vim下删除空行的4种实用技巧 | vim教程网

 4 years ago
source link: https://vimjc.com/vim-delete-empty-line.html?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Vim下删除空行的4种实用技巧

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

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

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

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

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

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

vim global delete

2. 使用 vglobal 命令删除Vim文件空行

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

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

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

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

vim vglobal delete

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

3. 执行 shell 命令删除Vim文件空行

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

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

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

vim grep delete

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

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

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

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

vim substitute delete

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

qrcode.jpg

《女程序员说》

原创不易,希望能给小女子的公众号加个关注~


Recommend

  • 15

    该段代码特点: 1. 通过filepath的后缀,判断文件里包含的语言 2. 获取该次提交的代码,里面注释和空行的增加数和删除数 3. 支持文件类型,py,sh,java,rb,vue,html,js,xml,sql,css等 4. 如果需要支持更多的语言代码分析,在luanges里加入...

  • 9
    • lotabout.me 3 years ago
    • Cache

    Vim 小技巧-删除行末空格

    Table of Contents在编写代码时,我们时常一不留神就在行末多打了几个空格。却又看不出来,即使用 vim-airline 之类的插件能知道有行末空格(trailing spaces),删除起来也特别麻烦。本文就介绍一个我就常用的 vim 快捷键:删除行末空格。 ...

  • 2

    您现在的位置:首页 --> 发现 --> html页面里的幽灵空行――UTF8Bom html页面里的幽灵空行――UTF8Bom

  • 5
    • www.junz.org 3 years ago
    • Cache

    Vim实用技巧

    Vim 是一款开源的老牌编辑器,有编辑器之神的美称。但是它复杂的快捷键劝退了很多人,尤其是现在市面上涌现了一大批操作简单,功能强大的IDE。但在深入接触过Vim,已经形成惯性后,大多数情况下我还是选择使用Vim Key Binding的方式来编辑文件。可以说,我现在...

  • 1
    • yihui.org 2 years ago
    • Cache

    为咩你不空行

    为咩你不空行 谢益辉 / 2017-05-04 再来说一个我的强迫症症状:我倾向于写略拥挤的代码,但读不了拥挤的文字,所以我看 Markdown 源文件时,很怕没有空行的文件。

  • 2
    • houye.xyz 2 years ago
    • Cache

    《Vim实用技巧》笔记

    《Vim实用技巧》笔记 《Vim实用技巧》笔记 最简单的宏 从进入插入模式的那一刻起(例如,输入i),直到返回普通时为止(输入Esc),Vim会记录每一个按键操作,做出这样一个修改后再用.命令的话,它将会重新执行所有这...

  • 3
    • segmentfault.com 2 years ago
    • Cache

    在线文本去空行工具

    在线文本去空行工具发布于 刚刚在线文本去空行工具

  • 2
    • segmentfault.com 2 years ago
    • Cache

    在线多空行只保留一个工具

    在线多空行只保留一个工具在线多空行只保留一个工具多个空行只保留一个,工具会把2个及...

  • 1

    一、CopyOnWriteArrayList简介1.1 什么是CopyOnWriteArrayList

  • 1

    idea 中, svn 提交代码时,会将空行认为被修改内容 V2EX  ›  问与答

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK