如何在 Vim 中删除所有不包含某个单词的行?

dig*_*oel 178 vim regex find-and-replace

在vim中,我可以删除所有包含“price”这个词的行

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

如何删除所有不包含“价格”一词的行?

Yab*_*Yab 239

您可以使用

:g!/price/d

删除不包含“价格”的每一行

如下所述,g!v. 这相当于

:v/price/d

  • `:g!` 也称为 `:v`(类似于 `grep -v`)。 (48认同)
  • `%` 在此上下文中是一个特殊范围,表示整个文件。参见`:help cmdline-ranges`。 (4认同)
  • 我知道这会很容易... (3认同)
  • `%` 有什么作用? (3认同)
  • `%` 是可选的,因为默认范围是整个缓冲区。 (2认同)

小智 39

您还可以使用:

:v/price/d

删除行。

  • Fwiw -- 看起来像 [`g` 代表“全局”,而 `v` 代表“逆”](https://vim.fandom.com/wiki/Power_of_g)(如果你相信你在 vim.famdom 上读到的内容) 。 (3认同)

Cir*_*郝海东 5

%!grep "price"
Run Code Online (Sandbox Code Playgroud)

是另一种比:v大文件快得多的选项。

在 Vim 7.4、Ubuntu 14.04、1M 行日志文件上测试。

包含单词的行:https : //stackoverflow.com/questions/1725265/how-can-i-delete-all-lines-that-do-not-begin-with-certain-characters/42714334#42714334