vim 删除行_vim技巧:删除包含特定字符的行,删除重复行并重新排序

aa015ce85cbbe645077ed0130234ca8d.png

下面介绍 vim 的一些使用技巧:

  • 删除包含特定字符的行
  • 删除重复行,并对所有内容重新排序

删除包含特定字符的行

在 vim 中,可以使用 :g/pattern/d 命令删除所有包含 pattern 模式的行。
例如,删除所有以大写字母 D 开头的行,可以执行 :g/^D/d 命令。这里的 ^ 表示匹配行首。

这里的 :g:global 命令的缩写,用 :help :g 命令查看它的帮助说明。部分关键说明如下:

:[range]g[lobal]/{pattern}/[cmd]
Execute the Ex command [cmd] (default ":p") on the lines within [range] where {pattern} matches.

即,:global 命令对匹配特定模式的每一行都执行所给的命令,有效的命令是vim命令行支持的命令,也就是以冒号 ':' 开头的命令,但是输入的时候不需要提供冒号。所以,上面的 d 对应 :d 命令,表示删除一行。

使用 :help usr_10.txt 命令查看该用户手册,在 “10.4 The global command” 小节中对 :global 命令也有描述,可以参考。

删除重复行,并对所有内容重新排序

在 vim 中,可以执行 :sort u 命令删除重复行,只保留一行,并会对所有内容重新排序。
例如在文件中有如下的内容:

debugcheckoutreleasehello.chello.creleasehello.cdebug

执行 :sort u 命令后,会变成下面的内容:

checkoutdebughello.crelease

可以看到,去掉了相同内容的重复行,只保留一行,所有行按照字母顺序升序排列。
在 sort 后面加上感叹号 '!' 会按照字母顺序降序排序,也就是逆序。例如 :sort! u 命令。

使用 :help :sort 命令查看该命令的帮助说明,部分关键内容说明如下:

:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/]
Sort lines in [range]. When no range is given all lines are sorted.
With [!] the order is reversed.
With [u] only keep the first of a sequence of identical lines (ignoring case when [i] is used). Without this flag, a sequence of identical lines will be kept in their original order. Note that leading and trailing white space may cause lines to be different.

即,:sort 命令本身对文件行进行排序,默认不会去掉重复行,加上 u 参数来去掉重复行。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值