In ogni caso, a volte ho occasione di sostituire le prime occorrenze di una partita su una linea, ma non a tutti piacerebbe g
. per esempio:
a a a a a
per
b b b a a
So che potrei usare :s/a/b/[enter]:[up][enter]:[up][enter]
, ma è abbastanza noioso in tre ripetizioni, ho linee con potenzialmente più di 10 sostituzioni.
Ho provato:
:s/a/b/3g
: vim si è lamentato dei personaggi finali.:s/a/b/3
: modifica la prima occorrenza su questa e le due righe seguenti.3:s/a/b
: uguale al precedente.:s/a/b/g3
: modifica tutte le occorrenze su questa e le due righe successive.:3s/a/b
: modifica la prima occorrenza sulla riga 3.:/a/,3/a/s/a/b
: modifica la prima occorrenza su ogni riga tra la successivaa
e la terza riga contenutaa
nel file (chiedendo di invertire se necessario).:/a/,/\([^a]*a\)\{3\}/s/a/b/
: cambia la prima occorrenza su ogni riga tra questa e la successiva con 3a
secondi (e questo non sarebbe stato facilmente estendibile a una ricerca multi-carattere).
E vari altri schemi di indirizzamento, nessuno dei quali ha funzionato. Devo dire che ho imparato parecchio sul :s
comando cercando di trovare una risposta a questo problema, ma non l'ho ancora risolto.
Qualcuno sa come farlo?
(punti bonus per intervallo specifico, ad es. dalla seconda alla quarta occorrenza)
n
e .
, anche se non pensavo di usarli qui. Certamente un miglioramento, grazie.
s/a/=something/
dovrebbe fare il trucco ( :help sub-replace-=
). Non sono abbastanza fluente in Vim da scrivere something
subito.
:[up][enter]
può essere sostituito con &
, che non è ancora l'ideale ma almeno è meno doloroso.