使用vim仅保留范围内的行

use*_*123 1 vim

我想知道在VIM中是否有办法只保留一定范围内的行,即说我想在文件中仅保留1:20行,并丢弃其他所有内容.更好的是,我想保留1-20和40-60行是否有办法做到这一点?

有没有办法在不手动删除内容的情况下执行此操作?

Ing*_*kat 5

如果你用"行"表示整行,只需使用:delete带有反转范围的命令:

:21,$delete
Run Code Online (Sandbox Code Playgroud)

删除除1-20之外的所有行.

如果范围是非连续的,则替代方法是:vglobal具有仅在某些行中匹配的正则表达式原子的命令.例如,仅保留第3行和第7行:

:g!/\%3l\|\%7l/delete
Run Code Online (Sandbox Code Playgroud)

还有"少于/大于行"的原子,因此您也可以使用它们构建范围.