Eliminare il testo tra i tag HTML in vim?


164

lo so

di<

verrà eliminato in un tag HTML stesso.

Esiste un modo semplice per eliminare il testo tra due tag?

<span>How can I delete this text?</span>

Grazie!

Risposte:


321

diteliminerà il testo tra i tag XML corrispondenti. ( itè per "blocco tag interno".)

Vedi :h ite :h tag-blocks.


30
E, naturalmente, citquando vuoi scrivere subito dopo.
Debilski,

6
E il plugin Surround ( vim.org/scripts/script.php?script_id=1697 ) è fantastico quando vuoi fare cose come cambiare il tag circostante (cst) da un <p> a un <div>, per esempio.
Kris Jenkins,

4
C'è anche dat (Elimina un blocco Tag) che include i tag effettivi. cit che è come dit ma dopo entra in modalità insert. cat che è come dat ma entra in modalità insert dopo. Anche di "e di (rispettivamente per eliminare la doppia virgoletta interna e per eliminare la parentesi interna.
aiham

@KrisJenkins puoi mostrare un esempio completo di come ottenerlo? Posso farlo solo con virgolette / parentesi.
FelikZ,

1
Inoltre vat(o vit), seguito da ripetuti at(o it) per selezionare progressivamente i tag circostanti. (O v2at, ecc.). Quindi dper eliminare (ecc.).
Joe Freeman,

27
cit
ci"

Due dei migliori comandi per la produttività di vim.

Risparmio un sacco di tempo e fatica con solo quei due.


3
citè trattato in questo thread, ma per i posteri, ci"verrà eliminato fino al successivo "trovato. ottimo per cambiare i nomi delle classi nei tag html, come <span id="really long annoying-id">- con il cursore all'inizio ", premi ci"e lascia cadere per inserire nuovi caratteri tra le virgolette.
Alex Moore-Niemi,

ciwè anche utile in quanto elimina la parola corrente; Lo uso più di cite in ci"realtà.
John Sparwasser,

2
@ AlexMoore-Niemi: ci"eliminerà effettivamente il testo a sinistra fino alla citazione successiva ea destra fino alla citazione successiva e quindi entrerà in modalità di inserimento. ct"è in realtà il comando per "cancellare fino al successivo" trovato ". Ma sì, si comporta allo stesso modo se il cursore si trova sotto la citazione di sinistra.
schlimmchen

9

prova dt < mentre il cursore si trova sul primo carattere da eliminare. Nel tuo esempio la "H".


Molto utile anche per altre situazioni, grazie! (ho pensato che penso che dovrebbe essere "dt <")
CMB

1
Anche se questo è tecnicamente vero, richiede la navigazione verso il primo carattere che si desidera eliminare invece di saltare semplicemente in qualsiasi punto della linea. Ma vero è vero. :-)
lyonsinbeta,

4

( cursore sul primo carattere da eliminare ) v / <[invio] d

Questa soluzione inizia dal primo carattere, quindi entra in modalità visiva ("v"). Quindi cerca la parentesi iniziale successiva ("/ <"), quindi premere Invio per uscire dalla ricerca.

A questo punto, la selezione visiva coprirà il testo da eliminare. premere d ("d") per eliminarlo.

Se dovessi farlo per un sacco di tag, registrerei il comando e lo combinerei con alcune altre ricerche per renderlo ripetibile. La sequenza di tasti potrebbe apparire così:

[ cursore all'inizio del file ] qa /> [invio] lv / <[invio] dnq

quindi premere:

20 @ a

per fare questo per 20 tag


c/<[enter]Nella mia "vita di Vim" usavo molto il comando , ma ora sono un po 'dispiaciuto per questo. Vedete, la maggior parte dei plugin "Vi-mode" per altri editor / IDE popolari non supporta questo specifico tipo di comando. Essi sostengono cit, ci", ct<e comunque. Quindi, sto re-insegnando di nuovo.
Pilat,

-1

Se stai cercando di fare l'inverso dell'eliminazione del testo tra i flag, ti suggerisco di installare Vim-Surround e di eseguire ciò dstche elimina il tag surround

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.