Vim之删除重复行

题注:本文关于Vim的删除文本中的重复行。

最近开始使用Vim,感觉此乃外人间之神器,怪不得那么多Vimer对其偏爱有加。现在说说文本中重读行删除问题。在众多的编辑器中Vim对正则的支持估计是最强大的了,很多高级的正则表达式在Vim中都是支持的。以下是我的解法:

:%s/\(.*\)\n\1/\1\r/g
:g/^$/d

这里需要两个命令,后再http://vim.wikia.com/wiki/Uniq_-_Removing_duplicate_lines找到了我的加强版:

:g/^\(.*\)$\n\1$/d
:g/\%(^\1$\n\)\@<=\(.*\)$/d

两者都是前面的命令和我的相似,它删除的是重复项的前面一项;后面的命令删除的重复项的后面的内容。注意两个命令独立的,可以分别使用。对于g命令不是很熟悉,它是一个全局命令,以后会有全面介绍。

第二个命令的解释:

g//d <-- Delete the lines matching the regexp
\@<= <-- If the bit following matches, make sure the bit preceding this symbol directly precedes the match
\(.*\)$ <-- Match the line into subst register 1
\%( ) <--- Group without placing in a subst register.
^\1$\n <--- Match subst register 1 followed by end of line and the new line between the 2 lines

以上已经说得很明白了,不需要额外解释什么了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 "." 键来重复上一个指令。 例如,如果你想删除,可以使用 "3dd" 命令,然后使用 "." 键来重复这个命令。 你还可以使用 "u" 键来撤销上一个指令,使用 "ctrl + r" 键来重做撤销的操作。 ### 回答2: 在 Vim 编辑器中,可以使用"."命令来重复上一个执过的指令。当我们在使用 Vim编辑时,我们可以执各种编辑操作,例如插入文本、删除文本、剪切与粘贴等等。当我们执某个操作成功后,我们可以使用"."命令来重复刚才的操作。 使用"."命令的方法很简单。当我们完成一个编辑操作后,可以按下英文句点"."来重复上一个指令。比如,如果我们先执了一次"dd"(删除当前),然后按下".",就会再次删除当前,相当于连续删除了两。 除了"."命令,Vim 还提供了其他一些可以用来重复操作的命令,其中包括数字加命令(例如"3dd"可以删除当前和下两)、重复搜索(使用"/"进搜索后按"N"进反向搜索)、跳转到上一个编辑位置(使用"''"命令)等等。 通过重复上一个指令,我们可以更加高效地进编辑操作,节省时间和精力。但是需要注意的是,"."命令只能重复最后一次执的指令,如果想要重复其他历史指令,可以使用其他的命令或者宏来完成。 ### 回答3: 在Vim中,可以使用"."命令来重复上一个指令。这个"."命令可以重复上一个指令,并且可以在一系列编辑操作中非常方便地使用。例如,如果我首先使用命令"dd"来删除,然后使用"."命令,Vim将会再次执"dd"命令,从而删除下一。这对于重复简单的编辑操作非常有用,节省了时间和精力。 除了"."命令之外,还有一些其他的方法可以重复上一个指令。你可以使用"@"加上一个寄存器名字来重复该寄存器中的指令。例如,如果我首先在寄存器"a"中记录了一个删除的操作,然后使用"@a"命令,Vim将会执寄存器"a"中的删除操作,如果需要,可以反复执它。 此外,还可以使用Vim的宏来重复一系列的编辑操作。首先,你可以使用"q"命令来开始录制一个宏,然后执你想要重复的一系列编辑操作,最后使用"q"命令来停止录制宏。录制好宏后,你可以使用"@"加上宏名字来重复该宏。这种方式适用于需要执一系列复杂的编辑操作的情况。 总之,在Vim中,有多种方法可以重复上一个指令,你可以根据自己的需要选择最适合的方式来提高编辑效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值