vi / vim, come posso scrivere un numero di righe in un nuovo file


Risposte:


44

Tu puoi fare

:100,200w filename

Ovviamente 100.200 è l'intervallo di righe che si desidera scrivere.


Gli indirizzi sono inclusivi o esclusivi?
Marcin

3
Inclusive. Incluso anche se si usano modelli:: / ^ qualcosa /, / ^ else / w nomefile, o segni: 'a,' bw nomefile include le linee contrassegnate 'a' e 'b'.
Bruce Ediger,

Ciao @ Bernard, e se volessi tagliare le linee dal file corrente.
Ravi Sevta,

19

Il più generale:

  1. Sposta il cursore sulla prima riga del gruppo che desideri scrivere. Hit m e asequentiall. Questo è "imposta il segno chiamato 'a'".

  2. Sposta il cursore sull'ultima riga del gruppo, premi "m" e "b".

  3. Passa alla modalità di comando hit: come una sequenza, :'a,'b w filenamequindi premi Invio.

Funzionerà in vi, nvi e vim.

Un altro metodo, funziona in vim più moderno:

  1. Posiziona il cursore sulla prima riga del gruppo di righe che desideri scrivere. Hit V, per "avviare il blocco visivo delle linee".

  2. Sposta il cursore nella parte inferiore del gruppo di linee. Vim evidenzierà con video inverso ogni riga.

  3. Scrivi. Premi :per andare in modalità riga di comando. Questo ti darà un prompt nella parte inferiore della schermata che assomiglia a: :'<,'> Ciò significa dall'inizio del blocco visivo alla fine. Digita we il nome del file e premi Invio.

È possibile aggiungere righe singole alla fine del file come necessario posizionando il cursore sulla riga che si desidera scrivere, quindi digitando: :.w >> filenamee premendo Invio.

I comandi "Scrivi un gruppo di righe" funzionano anche con ">> nomefile" anziché solo "nomefile". Il ">>" fa sì che vi o vim si aggiungano al file, piuttosto che semplicemente scriverlo.


8

Per aggiungere alla risposta di Bernhard, puoi anche selezionare una regione usando la modalità visiva e poi entrare :w filename.


8

Se conosci i numeri di riga che vuoi scrivere, puoi farlo dalla riga di comando:

vim -c "100,200w new_file.txt" -c wq original_file.txt

1

un piccolo trucco sta usando il numero di riga relativo. Ad esempio:: + 0, + 99w nomefile scrive le successive 100 righe nel nomefile.


Non sovrascriverà il file originale? L'OP vorrebbe scrivere su un altro file.
SabreWolfy,

1
@SabreWolfy No; forse ti sei perso 'nome file' dopo i numeri di riga. Ho appena testato la sua versione e ha funzionato.
Felwithe
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.