清除行的速度快于[0] [d] [$]


18

有没有一种比行上擦除文本更快的方法

  • 按下0以跳到开始,然后
  • d$删除直到该行的末尾?

另外,如果我想删除缩进以外的所有内容怎么办?有没有办法做到这一点?

Answers:


34

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

  1. dd 将删除当前行(不清楚)
  2. 0D 将清除当前行,包括空格
  3. ^D将清除当前行(包括空格)(^dg_节省尾随空格)
  4. 0C 将清除当前行(包括空格)并使您进入插入模式
  5. ^C将清除当前行(包括空格),并使您进入插入模式(^cg_节省尾随空格)

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

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


7
@SuperScript Scc
FDinoff 2015年

1
感谢您的出色回答,@ akshay; TYLTK它了最好的:vi.stackexchange.com/...
罗比WXYZ

9

是的 如果我喜欢Vim就是一件事,那就是“我能做到吗?”的答案。几乎都是一个有力的肯定

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

^D (非Ctrl + D键)将跳到第一个非空白字符,然后删除到最后。

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


6

用一个(移)键清除该行: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

3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.