Sono d'accordo con il paradigma "Vim non è un IDE". Ma ci sono momenti in cui non c'è un IDE. Ecco cosa uso in quelle situazioni:
: grep,: vimgrep,: Ag,: Ggrep
Refactoring che ha più a che fare con le sostituzioni regolari che di solito uso : grep nel mio albero del progetto e quindi registro una macro per eseguire il refactoring -: ge: s non sono cervelli. Di solito mi consente di modificare rapidamente un gran numero di file con uno sforzo minimo. Onestamente, utilizzo questo metodo più di ogni altro.
A seconda del flusso di lavoro, i comandi integrati potrebbero essere lenti / scomodi. Se usi git, allora vorrai usare l'eccellente plugin Fugitive e il suo :Ggrep
comando per cercare solo i file archiviati in git. Mi piace anche Silver Searcher per la sua velocità.
: argdo,: cdo e: bufdo
: cdo e : argdo sono utili per eseguire comandi vim su un insieme di file.
riga di comando
Quando è più difficile determinare l'elenco dei file che necessitano di modifiche tramite, :vimgrep
ricorro ai comandi grep / find della riga di comando per curare più da vicino l'elenco dei file che ho bisogno di refactoring. Salvare l'elenco in un file di testo e utilizzare :e
e un mashup di registrazioni di macro per apportare le modifiche necessarie.
Trovo che meno arrugginito mantengo le mie capacità di registrazione macro, più utile trovo Vim per il refactoring: sentirsi a mio agio nel salvare / ripristinare dai registri, aumentare / diminuire le variabili del contatore di registro, pulire / salvare le registrazioni macro su file per un uso successivo, ecc.
Aggiornare
Da quando ho scritto questo più videocast per i metodi che descrivo sono stati pubblicati su vimcasts.org (ti incoraggio a guardare TUTTI i Vimcast! ). Per il refactoring guarda questi:
Vimgolf è anche un ottimo modo per esercitarsi.
L'ubiquità dei server Language Server Protocol da quando ho scritto questa risposta ha anche portato alcune capacità di refactoring a Vim (e ad altri editor). IMO sono molto lontani dall'uguaglianza delle capacità di refactoring che vedresti in un IDE appositamente costruito (io li uso e preferisco coc e ALE). Vedi altre risposte su questa domanda per maggiori informazioni!