vim中选择匹配文本删除技巧

试举几例如下:

1. 如何只保留匹配内容行而删除其他行?

:v/pattern/d
:help :v

2. 如何对每行只保留匹配内容而删除这一行中的其它内容
:%s/^.*\(pattern\).*$/\1/g

3. 删除包含特定字符串的行
:g/pattern/d

4. 删除包含特定字符串的行,每次删除前都提示
:%s/^.*pattern.*\n//c

5. 处理字符串: /123/456/789/109/example.txt, 怎么删除到最后一个/,然后得到example.txt ?
0dte
解释:0       到行首
           dte   删到第一个e

6. 处理字符串: /123/456/789/ef/109/example.txt, 怎么删除到最后一个/,然后得到example.txt ?
$T/d0
解释:$     到行尾
          T/    从后往前搜到第一个/
          d0   删到行首

d/ex然后回车

解释:d     删除

           /ex  搜到第一个ex

整行匹配删除

假如这些特定行的特征开头字符串为“datetime”,那么批量删除这此行的方法是,用 vim 打开日志文件,在命令模式下,键盘输入:

:0,%s/^datetime.* //g

在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择。
其它相关命令:
v:按字符选择。经常使用的模式,所以亲自尝试一下它。

V:按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。

CTRL+v:按块选择。非常强大,只在很少的编辑器中才有这样的功能。你可以选择一个矩形块,并且在这个矩形里面的文本会被高亮。

值得注意的是如果VIM中使用自动换行,那么直到你按ENTER换行前,VIM都会将你之前输入的内容视为一行而不是你看到的好几行,按块选择时就会按VIM中的行来选择块。

在选择模式的时候使用上面所述的方向键和命令(motion)。比如,vwww,会高亮光标后面的三个词。Vjj 将会高亮当前行以及下面两行。


全选的方法

v + G + $ 选定全部,不过前提是光标在首行的第一个字母才可以,而使用ggVG就不用光标定位在首行了




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值