vim 的 global 命令

global命令介绍

global 命令的执行原理和执行流程是:global 命令会在指定的 range 范围内,标记所有匹配 pattern 的文本行,并对匹配的行逐行执行 Ex 命令。

Vim global命令形式为 :[range]g[lobal][!]/{pattern}/[cmd]

用于指示Vim在 [range] 界定范围内对 (不) 匹配模式 {pattern} 的文本行执行 Ex 命令 [cmd]。

range                 表示操作范围,Vim :global 命令的默认作用范围是整个文件 (用%表示)

!                         表示反转 :global 命令的行为,将在没有匹配到指定模式的行上执行 [cmd]

pattern            指定 :global 命令要匹配的目标模式,若将该域留空,Vim会自动使用当前(最近一次)的查找模式

cmd                     除 :global 命令之外的任何 Ex 命令,Vim缺省使用 :print 命令 (缩写 :p)

命令行模式下的global命令

Vim 命令行模式下的 global命令 (缩写形式 :g) :

可用于在某个指定模式的所有匹配行上运行可执行的 Ex 命令,这里提到的指定模式便可以使用正则表达式。

例如

可以在 Vim 中执行命令 :g/^\s*$/d 来删除 Vim 当前打开文件中的所有空白行;

如果要删除以 // 开头的所有行,可以执行命令 :g/^\/\/.*$/d

Vim global命令使用技巧

删除含有含有指定字符串的行

命令行模式下执行

:g/STRING/d

使用 global 删除空白行

匹配空白行的正则表达式可以用 ^\s*$ 表示

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

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

shell命令删除空白行

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

在 Vim 的命令行模式中,在命令前加一个 ! 前缀 (参见 :h :!) 就可以调用外部的shell程序。

例如,如果想在Vim内部查看当前目录下的所有文件,可以在Vim命令行模式下运行命令 :!ls

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

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

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

删除空白行可以理解为一种替换类型的操作。为了在全文范围内替换(删除)所有空白行,可以使用

 :%s/^\s*$\n//g 命令。

空白行用  ^\n*$表示;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值