Respostas:
"dap" na verdade não exclui tudo. Por exemplo, tente colocar isso no seu buffer:
1
1
2
2
3
3
Em seguida, coloque o cursor em '2' e digite "dap". Vai deixar o '1 e o 3'.
Isso ocorre porque "dap" exclui um parágrafo . De fato, esse é realmente o mnemônico: "(D) elete (A) (P) parágrafo". Você pode vê-lo na ajuda em :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.
Isso é chamado de "objeto de texto". Você pode ler sobre isso em:, :h text-objects
ou pode ler este artigo incrível sobre objetos de texto.
De qualquer maneira, a idéia básica dos objetos de texto é que você esteja definindo os limites de um objeto e, em seguida, aplique comandos a todo esse objeto, mesmo quando você estiver no meio dele. Por exemplo, tenho certeza que você sabe que pode usar dw
para excluir uma palavra. Mas e se você estiver nesse cenário?
Hello world
Cursor: ^
Se você digitar dw
, ainda terá a wo
esquerda. Se você digitar diw
, isso será excluído dentro da palavra ; portanto, na maioria das vezes, é equivalente a digitar bdw
.
Como posso descobrir esse tipo de coisa por mim mesmo?
Você teve a idéia básica! Verificar a ajuda é sempre um bom começo. Nesse caso, você poderia ter percebido que d
é um operador; portanto, a ajuda que realmente estava procurando era o argumento para o operador, neste caso ap
.
diw
e bde
ainda não são os mesmos: se o cursor estiver no início de uma palavra. Da mesma forma, se o cursor estiver em um espaço entre as palavras, ele bdw
excluirá a palavra à esquerda e daw
a palavra à direita. Acho que a resposta original "na maior parte ..." é provavelmente a melhor que obteremos em termos dessas equivalências.