VIM中的线性选择

Léo*_* 준영 3 vim

如何选择VIM中不包含单词"hello"的所有行?我需要它猛拉然后保存到文件中.我该怎么做?我正在寻找类似的东西:

:v /!(你好)>文件

bfa*_*bry 11

:g!/hello/ yank A
Run Code Online (Sandbox Code Playgroud)

这些行现在存储在寄存器a中,粘贴它们做"ap

编辑:可以缩写为

:g!/hello/y A
Run Code Online (Sandbox Code Playgroud)

对于那些对vim意味着什么感兴趣的人:

:g =全球搜索
!=对布尔测试的否定
/ hello/=正则表达式匹配"hello"
y =在每个匹配的行上执行的命令,在这种情况下"yank"
A =对"yank"命令的寄存器参数.在这种情况下,寄存器'a'但是以大写形式的形式附加到寄存器而不是替换.

  • :v相当于:g! (3认同)

too*_*php 9

只要您拥有grep系统,就可以使用以下命令:

:!grep -v hello % > file
Run Code Online (Sandbox Code Playgroud)


d.h*_*fer 6

我通常会做一些变化

:g/hello/d
Run Code Online (Sandbox Code Playgroud)

即删除包含"hello"的所有内容,然后选择,抽取或需要完成的任何操作,最后还原回击你.我发现这对构建命令行管道没有太大的精神负担.


use*_*400 6

到目前为止我没有看到的替代方案是redirecton.

所以对于你的情况,这将是

:redir > file
:g!/hello/
:redir END
Run Code Online (Sandbox Code Playgroud)

也可以看看

:help redir
:help verbosefile
Run Code Online (Sandbox Code Playgroud)