在vim中,除了最后100行之外,如何删除文件中的所有行?

Edw*_*uay 20 vim

在vim当我的光标在第一行时,我可以按:

100dd

删除前100行.

但我怎么删除所有线,除了最后 100行?

too*_*php 53

在正常模式下:

G100kdgg
Run Code Online (Sandbox Code Playgroud)

换一种说法:

G     -> go to last line
100k  -> go up 100 lines
dgg   -> delete to top of file
Run Code Online (Sandbox Code Playgroud)


Mar*_*wis 49

在ex模式下:

:1,$-100d
Run Code Online (Sandbox Code Playgroud)

说明:":"将编辑器置于"ex模式".ex模式的d命令删除指定为单行号或行范围的行.$是最后一行,算术可以应用于行号.

  • FWIW这是更好的答案,恕我直言 (3认同)

Gre*_*ill 11

另一种通用解决方案:

:%!tail -100
Run Code Online (Sandbox Code Playgroud)

您可以在!任意修改当前缓冲区后使用任何shell命令.Vim启动命令并将当前文件提供给stdin,并从中读取新缓冲区stdout.