Vim:删除除当前行外的所有内容

4

我知道这有点像vim高尔夫,但我对其他意见/想法很感兴趣。有时我需要编辑一个文件并删除除当前行外的所有内容。我的解决方案是使用ex模式 :t0|2,$d

这需要多达8个按键!(我知道这个命令可以轻松地映射到键盘上的某些方便组合键。)还有其他建议、想法吗?

2个回答

5

首先,你的方法并不是8个按键,如果我们不计算保存(ZZ),那么它们是9个按键。因为你还需要按下Enter

有一种方法,只需6个按键:

YggVGp

除了高尔夫,我认为我的解决方案比你的更加直接。可能是因为我喜欢vim中的普通模式。 :-)
对于练习,如果你需要多次进行操作,你可能需要创建一个映射。

一个33.33%的改进和正常模式。谢谢 :) - user1924627

2

另一个解决方案:

:.w!|e<CR>

2
重要的是文件实际上已被更改,而 OP 的原始解决方案只是更改了缓冲区。这取决于用例,但需要注意。 - Lieven Keersmaekers
你的解决方案让我微笑 :) 顺带提一下:它有两个假设。它假设(1)有一个文件名和(2)一个保存的缓冲区-(1)并不总是成立(至少对于我的使用情况,例如shell命令的输出),(2)未保存的缓冲区可能需要一个:w!|e!<cr>-8个按键(包括<cr>-我忘记计算了;))。对于已保存的文件,这个方案几乎与肯特的正常模式解决方案一样好(+1个按键)。谢谢! - user1924627
是的,我的回答中有很多假设。 - romainl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接