Diciamo che ho il seguente file molto semplice
a
b
c
d
e
e ho deciso che volevo aggiungere righe vuote dopo ogni riga. Diversi metodi diversi mi saltano immediatamente in mente. Potremmo semplicemente farlo (e quindi abbracciare il fallimento). Potremmo registrare una macro come qqo<ESC>jq
e ripeterla più volte.
Altri due metodi mi sembravano più ovvi in quel momento.
In primo luogo, ho pensato di emettere il :norm
comando o
su ogni riga. Quindi corro :%norm o
. Ma ciò che realmente accade è che otteniamo 5 righe vuote, seguite dalle linee non separate come sopra. Interpreto questo per dire che %norm
, in realtà, vim rileva il problema del messaggio il seguente comando normale sulle prime cinque righe di questo file di cinque righe . Il o
comando crea una nuova riga e vim è "stupido", nel senso che fa riferimento per numero di riga e non effettivamente da qualche altro identificatore.
Bene, ero imbarazzato. Sicuro. Ho provato alcune altre cose per vedere se potevo far funzionare il metodo sopra, ma purtroppo non ci sono riuscito. Per curiosità, ho provato il mio altro metodo di applicazione di massa preferito. Questo mi ha portato a provare :g/^/norm o
. Con mia sorpresa, questo funziona bene! Quindi, ai miei occhi, sembra che vim non sia "stupido" qui come sopra e fa riferimento a righe per più del semplice numero di riga.
Cosa sta succedendo esattamente?
:%s/$/\r/
, o come questo::%s/\n/\r\r/
. L'asporto è che le nuove righe possono essere abbinate\n
, ma devono essere scritte come\r
nei valori di sostituzione.