Vim命令删除除选定行之外的所有行

Jea*_*ean 6 vim line

我想做的逆操作

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

即删除文件中没有的所有行 pattern

Xav*_* T. 22

您可以使用v选择没有模式的所有行:
:v/pattern/d将实现您想要做的.

看到 :help :v

  • 使用这个全局命令似乎比shell命令更好,因为:(1)它是一个内部Vim命令,不依赖于外部grep实用程序,这可能是Windows系统上的问题,并且(2)不确定这一点,但是因为shell filter本质上返回一个全新的文档,而global命令只删除行,我认为全局更适合保持撤消历史记录更小(从而更快),以及(3)通常习惯使用Vim是个好主意globals(:g和:v)因为它们允许您对匹配行执行任意操作,而不仅仅是删除. (7认同)