对我来说,在vim中一个很常见的操作是删除所有行的内容,而不是删除行本身(即不是换行符),因为我是强迫性的并且喜欢使文件中没有空格。 />
有内置的vim方法吗?也许是d <movement command>操作?

到目前为止,我所拥有的最好的方法是0d $。有更快的方法吗?

评论

作为手动修剪空白的替代方法,您可以使用vim-better-whitespace这样的插件,该插件突出显示尾随空白,提供了一次删除所有空白的命令,甚至可以在保存时自动进行删除。

另请参见从文件的所有行中删除尾随空格的最简单方法是什么?。

即使没有插件,您也可以使用搜索和替换来全局删除尾随空白,例如:%s / \ s * $ //

#1 楼

您可以使用0D,它将转到该行的第一个字符并删除直到该行的末尾。请注意,如果要单独保留任何前面的空格,可以使用^D。另外,使用.无法重复这些操作。如果要使用.命令可以重复进行的操作,请参阅David Lord的回答。

帮助主题:


:help 0
:help D
:help ^


评论


尽管这是直接的,并且击键次数最少,但使用不能重复。命令。因此,如果您想重复,我认为cc 或S 更具吸引力。

–tommcdo
15年4月29日在13:11

那是真实的。但是,您可以将其记录为宏,然后使用..重复该操作。

–EvergreenTree
15年4月29日在13:23

通常,宏不能用。重复。它们的工作方式就像是交互输入的那些击键一样,因此单独对待各个命令。使用。将仅重复宏中的最后一个命令。

–tommcdo
2015年4月30日,下午2:51

我对其进行了测试,而这并不是我的工作方式。如果记录了宏,则使用@ {reg}来使用它,您可以使用重复它。之后。

–EvergreenTree
15年4月30日在12:07

您只是重复执行宏的最后一个命令D,在执行0D操作之后,光标将留在第0列中。如果您的光标已经在该行的开头(移至另一行之后),看起来宏被正确地重复了。尝试将光标向前移动并键入。 -您会看到它只重复D。

–tommcdo
15年4月30日在12:11

#2 楼

cc <Esc>可以按照您的要求进行操作,但是击键次数比0D多。如果以后要在该行中放入某些内容,则最好使用cc

评论


如果包含Shift,则相同且可能更容易。

–霍洛韦
2015年4月29日在12:02



尽管这不是“最干净的”解决方案,但它具有一个优点:这只是一个动作,因此可以通过重复使用。命令。相反,0D(如所选答案中所建议)是两个动作:0运动和D命令。

–tommcdo
15年4月29日在13:08

@Trengot对我来说,它可能比0D容易,因为我已经将jk映射到了vimrc中的,因此我的手甚至不必离开主行。

–EvergreenTree
2015年4月29日在18:23

参见@Nobilis答案:S被记录为“ cc的同义词”

– Volker Siegel
15年4月30日在17:05

#3 楼

S,然后Ctrl+CEsc似乎完成了完全相同的功能。

然后它可以与.重复,因为它构成一个动作。

评论


我只是想将其添加为答案,然后看到您的

–贝尔
15年4月29日在15:27

#4 楼

0D可能是您想要的。它将从光标删除到行尾,同时将行(以及光标前的任何字符)保留在原位。

评论


虽然这个答案是almos一岁,但值得注意的是0D将从行的开头而不是光标位置删除

–FliiFe
16年7月31日在16:05



#5 楼

我通常使用ddOdd删除当前行,O(大写o)添加新行。这也是3次击键,但是dd仅算作1个半,我发现O更容易与$相比键入
/>
def asd():
!···if foo:
!···!···foo()█
!···!···foobar()


0D将使您拥有:

如果在此之后立即按!···,Vim应该删除自动缩进,因此与0D相同。

没有“正确”的方法,我更喜欢ddO,因为它更灵活,并且因为它在我的手指中:-)

评论


^ D将单独留下空白。

–EvergreenTree
15年4月28日在23:13

由于O使您处于插入模式,因此等效于cc,除非没有自动缩进....除非您的行已经自动缩进。

–凯尔·斯特兰德(Kyle Strand)
15年4月29日在22:57

这在文件的最后一行上的行为将有所不同。

–tommcdo
2015年4月30日在2:41

#6 楼

为了节省一个宝贵的按键,您可以使用0C,它将删除当前行上的所有字符,并使您进入插入模式。