#1 楼
“ dap”实际上并不删除所有内容。例如,尝试将其放入缓冲区:1
1
2
2
3
3
,然后将光标放在'2'上并键入“ dap”。它将保留'1'和'3'。
这是因为“ dap”删除了一个段落。实际上,这实际上是个助记符:“(D)删除(A)(P)段”。您可以在
:h ap
下的帮助中看到它: *v_ap* *ap*
ap "a paragraph", select [count] paragraphs (see
|paragraph|).
Exception: a blank line (only containing white space)
is also a paragraph boundary.
When used in Visual mode it is made linewise.
这称为“文本对象”。您可以在以下文章中阅读有关这些内容的信息:
:h text-objects
,或者您可以阅读有关文本对象的精彩文章。无论哪种方式,文本对象的基本思想都是先定义对象的边界,然后再定义对象的边界。将命令应用于整个对象,即使在其中途也是如此。例如,我确定您知道您可以使用
dw
删除单词。但是,如果在这种情况下该怎么办?Hello world
Cursor: ^
如果键入
dw
,您仍然会剩下wo
。如果您输入diw
,则会在单词内删除,因此在大多数情况下,它等效于输入bdw
。我如何才能自己找到这种情况?
您已经掌握了基本思路!检查帮助始终是一个好的开始。在这种情况下,您可能已经意识到
d
是运算符,因此,您真正需要的帮助是运算符的参数,在这种情况下为ap
。
评论
+1!要学究:diw会留下尾随空格,而bdw不会。 diw与bde相同;-) bdw的垂饰实际上是daw,它与问题中的笔划使用相同的“ a”。
– M.Herzkamp
17年1月25日在14:45
@ M.Herzkamp:但是diw和bde仍然不太一样:如果您的光标位于单词的开头。同样,如果光标位于单词之间的空白处,则bdw将删除左侧的单词,而daw将删除右侧的单词。我认为原始答案的“大部分……”可能是我们从这些对等方面获得的最好结果。
– wchargin
17年1月25日在21:01