有内置的vim方法吗?也许是d
<movement command>
操作?到目前为止,我所拥有的最好的方法是0d $。有更快的方法吗?
#1 楼
您可以使用0D
,它将转到该行的第一个字符并删除直到该行的末尾。请注意,如果要单独保留任何前面的空格,可以使用^D
。另外,使用.
无法重复这些操作。如果要使用.
命令可以重复进行的操作,请参阅David Lord的回答。帮助主题:
:help 0
:help D
:help ^
评论
尽管这是直接的,并且击键次数最少,但使用不能重复。命令。因此,如果您想重复,我认为cc
–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+C
或Esc
似乎完成了完全相同的功能。然后它可以与
.
重复,因为它构成一个动作。评论
我只是想将其添加为答案,然后看到您的
–贝尔
15年4月29日在15:27
#4 楼
0D
可能是您想要的。它将从光标删除到行尾,同时将行(以及光标前的任何字符)保留在原位。评论
虽然这个答案是almos一岁,但值得注意的是0D将从行的开头而不是光标位置删除
–FliiFe
16年7月31日在16:05
#5 楼
我通常使用ddO
。 dd
删除当前行,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
,它将删除当前行上的所有字符,并使您进入插入模式。
评论
作为手动修剪空白的替代方法,您可以使用vim-better-whitespace这样的插件,该插件突出显示尾随空白,提供了一次删除所有空白的命令,甚至可以在保存时自动进行删除。另请参见从文件的所有行中删除尾随空格的最简单方法是什么?。
即使没有插件,您也可以使用搜索和替换来全局删除尾随空白,例如:%s / \ s * $ //