Estoy de acuerdo con el paradigma 'Vim no es un IDE'. Pero hay ocasiones en las que no existe un IDE. Esto es lo que uso en esas situaciones:
: grep,: vimgrep,: Ag,: Ggrep
La refactorización que tiene más que ver con los reemplazos regulares que suelo usar : grep en mi árbol de proyectos y luego grabar una macro para hacer la refactorización -: g y: s no son ideas para pensar. Por lo general, me permitirá modificar rápidamente una gran cantidad de archivos con muy poco esfuerzo. Honestamente, uso este método más que cualquier otro.
Dependiendo de su flujo de trabajo, los comandos integrados pueden ser lentos / inconvenientes. Si usa git, entonces querrá usar el excelente complemento Fugitive y su :Ggrep
comando para buscar solo archivos registrados en git. También me gusta el Silver Searcher por su rapidez.
: argdo,: cdo y: bufdo
: cdo y : argdo son útiles para ejecutar comandos vim sobre un conjunto de archivos.
línea de comando
Cuando es más difícil determinar la lista de archivos que necesitan cambios :vimgrep
, recurro a los comandos grep / find de la línea de comandos para seleccionar más de cerca la lista de archivos que necesito refactorizar. Guarde la lista en un archivo de texto y use :e
un mashup de grabaciones de macros para realizar los cambios que necesito hacer.
Encuentro que cuanto menos oxidado mantengo mis habilidades de grabación de macros, más útil encuentro a Vim para refactorizar: sentirme cómodo guardando / restaurando registros, incrementando / decrementando las variables del contador de registro, limpiando / guardando grabaciones de macros en un archivo para su uso posterior, etc.
Actualizar
Desde que escribí esto, se han publicado más videocasts de los métodos que describo en vimcasts.org (¡te animo a que veas TODOS los Vimcasts! ). Para refactorizar, mira estos:
Vimgolf también es una excelente forma de practicar.
La ubicuidad de los servidores de protocolo de servidor de idiomas desde que escribí esta respuesta también ha aportado cierta capacidad de refactorización a Vim (y a otros editores). En mi opinión, están muy lejos de igualar la capacidad de las capacidades de refactorización que vería en un IDE especialmente diseñado (los uso y prefiero coc y ALE). ¡Vea otras respuestas a esta pregunta para obtener más información!