Vim:删除除当前行以外的所有行

Vim:删除除当前行以外的所有行,vim,Vim,我知道这有点像维姆高尔夫,但我对其他观点/想法感兴趣。有时我不得不编辑一个文件并删除除当前行以外的所有内容。我的go-to解决方案涉及ex模式:t0 | 2,$d 这些按键多达8次!(我知道这个命令可以很容易地映射到键盘上一些方便的组合。)其他建议、想法?首先,你的方法不是8次击键,如果我们不计算保存(ZZ),它们是9次击键。因为您必须按Enter 有一种方法,可按6次键: YggVGp 除了打高尔夫球,我觉得我的方法比你的更直接。可能是因为我喜欢vim中的正常模式。:-) 为了便于练习,如果

我知道这有点像维姆高尔夫,但我对其他观点/想法感兴趣。有时我不得不编辑一个文件并删除除当前行以外的所有内容。我的go-to解决方案涉及ex模式
:t0 | 2,$d


这些按键多达8次!(我知道这个命令可以很容易地映射到键盘上一些方便的组合。)其他建议、想法?

首先,你的方法不是8次击键,如果我们不计算保存(
ZZ
),它们是9次击键。因为您必须按
Enter

有一种方法,可按6次键:

YggVGp
除了打高尔夫球,我觉得我的方法比你的更直接。可能是因为我喜欢vim中的正常模式。:-)

为了便于练习,如果您需要多次这样做,您可能希望有一个映射。

另一个解决方案:

:.w!|e<CR>
:.w|E

重要的是文件被有效地更改,而OP的原始解决方案只是更改了缓冲区。这取决于用例,但需要注意。您的解决方案让我笑了:)正如旁注:尽管有两个假设。它假设(1)文件名和(2)保存的缓冲区-(1)并不总是这样(至少对于我的用例,例如shell命令的输出),(2)未保存的缓冲区可能需要
:.w|e-8次击键(包括-我忘了数;)。对于保存的文件,几乎(+1次击键)与Kent的正常模式解决方案一样好。谢谢是的,我的回答中有很多假设。33.33%的改善和正常模式。谢谢:)