Come posso eliminare rapidamente una linea in VIM partendo dalla posizione del cursore?


267

Voglio essere in grado di eliminare il resto della riga su cui sto partendo dalla posizione del cursore in VIM. C'è un comando semplice per farlo?

Per aiutare a illustrare, questo è prima del comando.

The quick brown dog jumps over the lazy fox.
     ^
     |----- Cursor is here.

Questo è dopo il comando

The q
     ^
     |----- Cursor is here.

Risposte:


430

(Modificato per includere buone aggiunte del commentatore :)

Do il suo equivalente d$eliminerà il resto della riga e ti lascerà in modalità comando. Co c$eliminerà il resto della riga e ti metterà in modalità di inserimento, e il nuovo testo verrà aggiunto alla riga.

Questo fa parte di vitutore vimtutor, "letture" eccellenti per i principianti di VIM.


1
Blast, ho pensato che fosse qualcosa di facile, stavo pensando a una combinazione di dseguito da qualcosa. Ho pensato che sarebbe stato più veloce pubblicare qui la domanda, oltre a beneficiare altre persone che non effettuano ricerche online prima di leggere il manuale.
Anthony,

2
Oppure C, l'unico modo "reale" per portare il cursore nella posizione indicata, anche se questo ti mette in modalità inserimento.
Walter,

1
@Anthony: C'è anche un " dseguito da qualcosa di" comando -equivalent per D, dove "qualcosa" è il $movimento: d$.
ib.

2
E se vuoi finire in modalità insert, usa C(o c$)
Benoit il

7
Mi rendo conto che questa soluzione ha già ricevuto una risposta, ma cercavo un modo per eliminare un'intera riga con VIM e l'ho trovato. L'opzione risultò che stavo cercando era dddalla modalità di comando. Spero che ciò aiuti tutti gli altri che si imbattono in questo.
Frito,


21

Potresti anche essere interessato a C, eliminerà anche la fine della linea come D, ma inoltre ti metterà in modalità Inserisci nella posizione del cursore.




5

Questa è una domanda molto antica, ma poiché VIM è ancora rilevante qualcosa dovrebbe essere chiarito.

Ogni risposta e commento qui a partire da ottobre 2018 ha fatto riferimento a ciò che sarebbe comunemente noto come un'azione "tagliata", quindi l'utilizzo di uno di essi sostituirà tutto ciò che è attualmente nel registro senza nome di VIM . Questo registro tende a essere trattato come un blocco appunti / copia predefinito, quindi nessuna di queste risposte funzionerà come desiderato se stai eliminando il resto di una riga per incollare qualcosa nello stesso posto in seguito, poiché tutto ciò che è stato appena eliminato verrà successivamente incollato al posto di tutto ciò che è stato strappato prima.

Il vero comando di eliminazione nel contesto del PO è "_D(o "_Cse si desidera la modalità di inserimento) Questo invia il contenuto cancellato nel registro del buco nero , designato da "_, dove non disturberà mai più nessuno (anche se è ancora possibile annullare questa azione usandou ).

Detto questo, tutto ciò che è stato strappato per ultimo viene memorizzato nel registro 0 e anche se viene sostituito nel registro senza nome, può comunque essere incollato usando "0p.

Scopri di più sul registro dei buchi neri e sui registri in generale per un divertimento VIM extra!


4

Do ddcancella e copia la riga nel registro. È possibile utilizzare Vxche elimina solo la linea e rimane nella modalità normale.

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.