"Dap" elimina tutto?


15

Conosco i comandi "dd" e "d {motion}", ma non riesco a trovare "dap" in help.txt di vim. Cosa fa "dap" in modalità normale e perché? (In alternativa, come posso scoprire questo genere di cose per me?)

Risposte:


29

"dap" in realtà non elimina tutto. Ad esempio, prova a inserirlo nel buffer:

1
1

2
2

3
3

Quindi posiziona il cursore su "2" e digita "dap". Lascerà '1 e' 3.

Questo perché "dap" elimina un paragrafo . In realtà, questo è in realtà il mnemonico: "(D) elete (A) (P) aragraph". Puoi vederlo nella guida sotto :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.

Questo si chiama "oggetto di testo". Puoi leggere queste informazioni sotto:, :h text-objectsoppure puoi leggere questo fantastico articolo sugli oggetti di testo.

In entrambi i casi, l'idea di base degli oggetti di testo è che si stanno definendo i confini di un oggetto e quindi si applicano comandi all'intero oggetto anche quando ci si trova nel mezzo. Ad esempio, sono sicuro che sai che puoi usare dwper eliminare una parola. E se ti trovassi in questo scenario?

Hello world
Cursor: ^

Se digiti dw, avrai ancora la wosinistra. Se digiti diw, questo verrà eliminato all'interno della parola , quindi per la maggior parte equivale a digitare bdw.

Come posso scoprire questo genere di cose per me stesso?

Hai avuto l'idea di base giù! Controllare l'aiuto è sempre un buon inizio. In questo caso, avresti potuto capire che si dtratta di un operatore, quindi l'aiuto che stavi davvero cercando era l'argomento per l'operatore, in questo caso ap.


+1! Per essere pedanti: diw lascia lo spazio finale, mentre bdw no. diw sarebbe lo stesso di bde ;-) Il ciondolo per bdw è in realtà daw, che usa la stessa "a" del tratto nella domanda.
M.Herzkamp,

1
@ M.Herzkamp: Eppure diwe non bdesono ancora gli stessi: se il cursore si trova all'inizio di una parola. Allo stesso modo, se il cursore si trova su uno spazio tra le parole, quindi bdweliminerà la parola a sinistra, mentre daweliminerà la parola a destra. Penso che la risposta originale "per la maggior parte ..." sia probabilmente la migliore che otterremo in termini di queste equivalenze.
mercoledì
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.