如何在VIM中删除从当前行到文件末尾的所有文本?


213

我有非常大的文件(超过10Gb)。我只需要文件顶部的几行。是否可以(在vim中)删除文件的其余部分(从当前行到文件末尾)?


12
我知道您想使用Vim,但是我会执行一个shell命令,例如: 您想从顶部开始的行数的参数head -n <number_of_lines> <filename> > <truncated_filename> 在哪里-n
EhevuTov 2014年

Answers:


365

dG 从当前行删除到文件末尾

dCtrl+ End将从光标删除到文件末尾

但是,如果该文件的大小与您说的一样大,则最好阅读前几行,head而不是编辑并保存该文件。

head hugefile > firstlines

(如果您使用的是Windows,则可以使用的Win32端口head


17
您可以为前20行指定多少行head,例如::head -n20 hugefilen默认至10
drevicko

3
需要动力head吗?在大文件(1G +)上使用dG会花费很多时间(例如5分钟)。
BurninLeo

3
对于那些寻找相反情况的人,dgg将从当前行删除到文件的开头。
stevesliva

d Ctrl + End对我不起作用。d Shift + End确实从光标删除到行尾。
轻机翼


30

:.,$d

这将从当前行到文件末尾删除所有内容。在处理测试向量的生成或剥离时,这非常有用。


2
我更希望对起始行有更多控制,因此我使用::<line number>,$d例如::3,$d将从第3行删除到文件末尾
emont01

0

只需添加另一种方法,在正常模式下,输入ctrl+vthen G,然后选择其余的内容,然后D,我认为它不起作用,您应该像@Ed Guiness一样,在Linux中选择head -n 20> filename。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.