vim 中使用 :g/:v 删除包含/不包含指定字符的行
vim 中使用 :g/:v 删除包含/不包含指定字符的行

vim 中使用 :g/:v 删除包含/不包含指定字符的行

在 Vim 中可以通过多种方式删除与搜索匹配的行。有以下几种常见的方法:

方法 1:使用 :g 命令

:g 命令(global)可以对匹配的行执行指定的命令。你可以使用 :g 命令来删除匹配的行。

示例

假设你要删除所有包含字符串 foo 的行,可以使用以下命令:

:g/foo/d

解释:

  • :g/foo/:全局搜索包含 foo 的行。
  • d:删除匹配的行。

方法 2:使用 :v 命令

:v 命令(invert)与 :g 命令相反,它对不匹配的行执行指定的命令。你可以使用 :v 命令来删除不匹配的行。

示例

假设你要删除所有不包含字符串 foo 的行,可以使用以下命令:

:v/foo/d

解释:

  • :v/foo/:全局搜索不包含 foo 的行。
  • d:删除匹配的行。

方法 3:使用 :g 命令结合 :normal

你可以使用 :g 命令结合 :normal 来执行更复杂的操作。例如,删除匹配行的下一行:

示例

假设你要删除所有包含字符串 foo 的行的下一行,可以使用以下命令:

:g/foo/normal jdd

解释:

  • :g/foo/:全局搜索包含 foo 的行。
  • normal jdd:在匹配行上执行 jdd 命令,即向下移动一行并删除该行。j nextline, dd delete line

方法 4:使用 :g 命令结合 :move

你可以使用 :g 命令结合 :move 来移动匹配的行到文件末尾,然后删除它们。

示例

假设你要删除所有包含字符串 foo 的行,可以使用以下命令:

:g/foo/move $

解释:

  • :g/foo/:全局搜索包含 foo 的行。
  • move $:将匹配的行移动到文件末尾。

然后你可以删除文件末尾的这些行:

:$d

总结

在 Vim 中,你可以使用 :g 命令、:v 命令、:normal 命令等多种方式来删除与搜索匹配的行。根据你的具体需求,选择合适的方法来操作文件内容。