
试举几例如下:
- 如何只保留匹配内容行而删除其他行?
:v/pattern/d
:help :v
如何对每行只保留匹配内容而删除这一行中的其它内容
:%s/^.pattern.$/\1/g删除包含特定字符串的行
:g/pattern/d删除包含特定字符串的行,每次删除前都提示
:%s/^.pattern.\n//c处理字符串: /123/456/789/109/example.txt, 怎么删除到最后一个/,然后得到example.txt ?
0dte
解释:0 到行首
dte 删到第一个e处理字符串: /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就不用光标定位在首行了