"Dap" exclui tudo?

15

Eu estou familiarizado com os comandos "dd" e "d {motion}", mas não consigo encontrar "dap" no help.txt do vim. O que o "dap" faz no modo normal e por quê? (Como alternativa, como posso descobrir esse tipo de coisa por mim mesmo?)

lsusr
fonte

Respostas:

29

"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-objectsou 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 dwpara excluir uma palavra. Mas e se você estiver nesse cenário?

Hello world
Cursor: ^

Se você digitar dw, ainda terá a woesquerda. 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.

DJMcMayhem
fonte
+1! Para ser pedante: diw deixa o espaço à direita, enquanto bdw não. diw seria o mesmo que bde ;-) O pingente para bdw é realmente daw, que usa o mesmo "a" que o traço na pergunta.
precisa saber é o seguinte
11
@ M.Herzkamp: E ainda assim, diwe bdeainda 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 bdwexcluirá a palavra à esquerda e dawa palavra à direita. Acho que a resposta original "na maior parte ..." é provavelmente a melhor que obteremos em termos dessas equivalências.
usar o seguinte comando