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 successivaae la terza riga contenutaanel 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 3asecondi (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 :scomando 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)
ne ., 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 somethingsubito.
:[up][enter]può essere sostituito con &, che non è ancora l'ideale ma almeno è meno doloroso.