Estoy familiarizado con los comandos "dd" y "d {motion}", pero no puedo encontrar "dap" en vim's help.txt. ¿Qué hace "dap" en modo normal y por qué? (Alternativamente, ¿cómo puedo descubrir este tipo de cosas por mí mismo?)
fuente
Estoy familiarizado con los comandos "dd" y "d {motion}", pero no puedo encontrar "dap" en vim's help.txt. ¿Qué hace "dap" en modo normal y por qué? (Alternativamente, ¿cómo puedo descubrir este tipo de cosas por mí mismo?)
"dap" en realidad no elimina todo. Por ejemplo, intente poner esto en su búfer:
1
1
2
2
3
3
Luego coloque el cursor en '2' y escriba "dap". Dejará los '1's y' 3's.
Esto se debe a que "dap" elimina un párrafo . De hecho, esa es en realidad la mnemónica: "(D) elete (A) (P) aragraph". Puedes verlo en la ayuda en :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.
Esto se llama un "objeto de texto". Puede leer sobre esto en: :h text-objects
o puede leer este increíble artículo sobre objetos de texto.
De cualquier manera, la idea básica de los objetos de texto es que está definiendo los límites de un objeto y luego aplica comandos a todo el objeto, incluso cuando está en el medio. Por ejemplo, estoy seguro de que sabe que puede usar dw
para eliminar una palabra. Pero, ¿y si estás en este escenario?
Hello world
Cursor: ^
Si escribe dw
, todavía tendrá la wo
izquierda. Si escribe diw
, se eliminará dentro de la palabra , por lo que en su mayor parte es equivalente a escribir bdw
.
¿Cómo puedo descubrir este tipo de cosas por mí mismo?
¡Tuviste la idea básica! Verificar la ayuda siempre es un buen comienzo. En este caso, podría haberse dado cuenta de que d
es un operador, por lo que la ayuda que realmente estaba buscando era el argumento para el operador, en este caso ap
.
diw
ybde
todavía no son lo mismo: si su cursor está al comienzo de una palabra. Del mismo modo, si su cursor está en un espacio entre palabras,bdw
eliminará la palabra de la izquierda, mientrasdaw
que eliminará la palabra de la derecha. Creo que la respuesta original "en su mayor parte ..." es probablemente la mejor que obtendremos en términos de estas equivalencias.