Vorrei ottimizzare il mio flusso di lavoro "trova e sostituisci" in Vim. È qualcosa che faccio spesso, dato che sono sicuro che anche molti di voi lo fanno. Di solito qualcosa sulla falsariga di: copia un blocco e cambia il nome di una variabile in alcuni punti. Lo so, lo so, che probabilmente fa scattare il tuo riflesso "perché stai copiando e incollando il codice", ma non seguiamo quella strada ... Ci sono molti casi d'uso validi :)
Sono ben consapevole della ricerca e sostituisci i comandi: :s
o :%s
ma non mi piacciono. Mi costringe a digitare sia il nome completo della variabile che sto cercando sia quello in cui lo sto cambiando. Forse c'è un modo migliore per risolvere la quantità di battitura con :%s
? Uso spesso nomi di variabili descrittivi lunghi, quindi per me è davvero un grosso problema. Inoltre, non mi piace il modo in cui scrivere un nome di variabile da zero è incline a errori e può consumare tempo e potenza mentale a caccia di errori di battitura. Preferisco di gran lunga digitarlo una volta, quindi copiarlo e incollarlo per evitarlo del tutto se possibile.
Il mio flusso di lavoro attuale utilizza una combinazione di movimento / yank / select / search / put per spostarsi nel file e sostituirlo uno per uno. Non è eccezionale ma ha il vantaggio di evitare di digitare nomi di variabili complete. Potrei aver solo bisogno di digitare le prime lettere con /
o utilizzare un altro comando di movimento (ad esempio fx
) a seconda di cosa c'è intorno e quindi ve
premere per selezionare l'intera parola. Inoltre, non mi dispiace dover ripetere per ogni istanza. Non faccio mai una sostituzione completa senza confermare ogni modifica. Ma sarebbe molto preferibile se potessi ripetere l'azione di sostituzione con un singolo tasto (cosa che non posso fare con questo metodo). ogni sostituzione è di solito qualcosa come n
allora ve
poi p
(o peggio ancora "0p
)
C'è un modo più veloce?
n
ve
"0p
. Il che sfortunatamente non può essere replicato solo con un.
n ce ctrl-r 0 <esc> n.n.n.n.n.n.
.
ripete l'ultimo "blocco comandi" (non sono sicuro del termine esatto. ad esempio: sposta + azione + testo. per esempio:cwtoto<Esc>
(cambia da cursore a fine parola con "toto"),c/foo<enter>bar<Esc>
(cambia da cursore a appena prima " pippo ", e sostituisci con" barra "). Puoi quindi spostarti (con cursore, hjkl o un numero + hjkl (lo fa n volte), G (vai alla fine del file), / qualcosa (vai poco prima" qualcosa "), ecc.), quindi premere.
per ripetere lo stesso" blocco comandi "