Ho provato a seguire quanto segue:
Come eliminare il testo selezionato nell'editor VI
ma
5dd
dà
E492: Non un comando dell'editor: 5dd
Ho quindi provato:
5d
Che elimina solo una singola riga. Come posso eliminare più righe?
Ho provato a seguire quanto segue:
Come eliminare il testo selezionato nell'editor VI
ma
5dd
dà
E492: Non un comando dell'editor: 5dd
Ho quindi provato:
5d
Che elimina solo una singola riga. Come posso eliminare più righe?
Risposte:
Sembra che tu stia inserendo i comandi in modalità di comando (alias "Ex mode"). In quel contesto :5d
rimuoverebbe la riga numero 5, nient'altro. Per 5dd
funzionare come previsto, ovvero rimuovere cinque righe conseguenti a partire dal cursore - immetterlo in modalità normale e non aggiungere il prefisso ai comandi :
.
Lo trovo più facile
/superuser/170795/how-can-i-select-and-delete-lines-of-text-in-vi
Puoi eliminare più righe (intervallo) se conosci i numeri di riga:
:[start_line_no],[end_line_no]d
Nota: d sta per cancellazione
dove
start_line_no è la riga iniziale no che si desidera eliminare e end_line_no è la riga finale no che si desidera eliminare. Le linee tra l'inizio e la fine, incluso l'inizio e la fine, verranno eliminate.
Per esempio:
:45,101d
Le righe tra 45 e 101, comprese 45 e 101, verranno eliminate.
$
per indicare l'ultima riga nel file. Quindi :45,$d
eliminerei ogni riga da 45 fino alla fine.
/<\/div>/
:.,[end_line_no]d
Comandi elencati per l'uso in modalità normale (prefisso con :per modalità di comando).
Testato a Vim.
Per importo riga:
Per numero di riga:
Backwards range given, OK to swap (y/n)?
Se preferisci un metodo in modalità non visiva e riconosci i numeri di riga, vorrei suggerirti un altro modo semplice.
Esempio
Voglio eliminare il testo dalla riga 45 alla riga 101.
Il mio metodo suggerisce di digitare un comando di seguito in modalità comando:
45Gd101G
Si legge:
Vai alla riga 45 (
45G
) quindi elimina il testo (d
) dalla riga corrente alla riga 101 (101G
).
Nota che vim
potresti usare gg
al posto di G
.
Confronta con la risposta di @Bonnie Varghese che è:
:45,101d[enter]
Il comando sopra riportato dalla sua risposta richiede 9 volte la digitazione incluso enter, dove la mia risposta richiede 8-10 volte la digitazione. Pertanto, una velocità del mio metodo è comparabile.
Personalmente, io preferisco 45Gd101G
sopra :45,101d
perché mi piace bastone per la sintassi del comando del VI, in questo caso è:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
Premi il Esctasto per assicurarti di non essere in una modalità di modifica. Posiziona il cursore sulla prima riga da eliminare. Enter :5dd
. La riga corrente e le quattro righe successive devono essere eliminate.
In alternativa, se hai attivato la numerazione delle righe ...
Premi il Esctasto per assicurarti di non essere in una modalità di modifica. Inserisci :#,#d
dove '#' indica i numeri di riga iniziale e finale da eliminare.
Se si desidera eliminare un intervallo DOPO un trigger di linea specifico, è possibile utilizzare qualcosa del genere
:g/^TMPDIR/ :.,+11d
Ciò elimina 11 righe (incluse) dopo ogni incontro di ^TMPDIR
.
Per cancellare tutte le linee usate - ESC gg dG Per cancellare alcune righe diciamo 5 quindi usate ESC 5dd
Potrebbe essere fatto come segue ..