Je suis d'accord avec le paradigme «Vim n'est pas un IDE». Mais il y a des moments où il n'y a pas d'IDE. Voici ce que j'utilise dans ces situations:
: grep,: vimgrep,: Ag,: Ggrep
Refactoring qui a plus à voir avec les remplacements réguliers que j'utilise habituellement : grep sur mon arbre de projet, puis enregistre une macro pour faire le refactor -: g et: s ne sont pas des idées. Habituellement, cela me permet de modifier rapidement un grand nombre de fichiers avec très peu d'effort. Honnêtement, j'utilise cette méthode plus que toute autre.
En fonction de votre flux de travail, les commandes intégrées peuvent être lentes / peu pratiques. Si vous utilisez git, vous voudrez utiliser l'excellent plugin Fugitive et sa :Ggrep
commande pour rechercher uniquement les fichiers archivés dans git. J'aime aussi le Silver Searcher pour sa rapidité.
: argdo,: cdo et: bufdo
: cdo et : argdo sont pratiques pour exécuter des commandes vim sur un ensemble de fichiers.
ligne de commande
Lorsqu'il est plus difficile de déterminer la liste des fichiers qui nécessitent des modifications, :vimgrep
je recourt aux commandes de ligne de commande grep / find pour organiser plus étroitement la liste des fichiers que je dois refactoriser. Enregistrez la liste dans un fichier texte et utilisez :e
un mashup d'enregistrements de macros pour apporter les modifications que je dois apporter.
Je trouve que moins je garde mes compétences d'enregistrement de macros, plus je trouve Vim utile pour la refactorisation: se sentir à l'aise pour enregistrer / restaurer des registres, incrémenter / décrémenter les variables de compteur de registre, nettoyer / enregistrer des enregistrements de macro dans un fichier pour une utilisation ultérieure, etc.
Mettre à jour
Depuis l'écriture de ces vidéos, d'autres vidéos pour les méthodes que je décris ont été publiées sur vimcasts.org (je vous encourage à regarder TOUS les Vimcasts! ). Pour refactoriser, regardez ceux-ci:
Vimgolf est également un excellent moyen de pratiquer.
L'omniprésence des serveurs Language Server Protocol depuis que j'ai écrit cette réponse a également apporté une certaine capacité de refactoring à Vim (et à d'autres éditeurs). IMO, ils sont loin d'être égaux à la capacité de refactorisation des capacités que vous verriez dans un IDE spécialement conçu (je les utilise et je préfère coc et ALE). Voir les autres réponses à cette question pour plus d'informations!