有没有比

按0跳到开始,然后
按d $删除直到行尾更快的擦除文本的方法呢?

此外,如果我想删除除缩进以外的所有内容怎么办?有办法吗?

#1 楼

如您所说,有多种方法,并且您还可以考虑清除或删除当前行后下一步的操作。



dd删除当前行(不清除)

0D将清除当前行,包括空格

^ D将清除当前行,但不包含空格(^ dg_保存尾随空格)

0C将清除包括空格的当前行并将您置于插入模式

^ C将清除不包括空格的当前行并将您置于插入模式(^ cg_保存尾随空格)

cc或S分别用作4.或5.。如果'autoindent'分别处于打开或关闭状态。

因此请使用适合手部动作的任何东西。我相信0D是清除界线最快的方法,但是您可以根据需要将其映射到某个对象,以使其更快。

评论


@SuperScript S是cc的同义词

–FDinoff
2015年6月11日,下午3:58

感谢您的出色回答,@ akshay; TYLTK做到了最好:vi.stackexchange.com/…

–罗比·韦克斯(Robbie Wxyz)
15年6月29日在16:40

#2 楼

是的如果我喜欢Vim就是一件事,那就是“我能做到吗?”的答案。几乎总是很强调。

0D跳转到开头,然后从行尾删除。

^ D(不是Ctrl + D)将跳转到

(PS我刚刚发现了这个问题,想与其他菜鸟分享。请告诉我是否有更好的方法。)

#3 楼

用一个(移动的)键清除该行:S.

这也保持缩进。

您可以在缩进后的第一个位置或行的开头进入插入模式-正是您需要替换的行-因此名称为S-类似于替换。

:help S

["x]S   Delete [count] lines [into register x] and start
        insert.  Synonym for "cc" |linewise|.

["x]cc  Delete [count] lines [into register x] and start
        insert |linewise|.  If 'autoindent' is on, preserve
        the indent of the first line.


评论


S是关键。

– domi91c
17年4月20日在18:29

#4 楼

使用Kana的“ vim-textobj-line”插件,您可以对带有il的缩进行(例如dil)或不带换行符的整行使用al(例如yal)进行操作。这种方法的优点是微妙的:无需为所需的操作考虑两个动作(开始,结束),而是直接指定文本对象:在一行中。