Eu concordo com o paradigma 'Vim não é um IDE'. Mas às vezes não há um IDE. Aqui está o que eu uso nessas situações:
: grep,: vimgrep,: Ag,: Ggrep
Refatoração que tem mais a ver com substituições regulares que eu geralmente uso : grep na minha árvore de projeto e, em seguida, registro uma macro para fazer a refatoração -: ge: s não são brainers. Normalmente, ele permite que eu modifique rapidamente um grande número de arquivos com muito pouco esforço. Honestamente, eu uso esse método mais do que qualquer outro.
Dependendo do seu fluxo de trabalho, os comandos integrados podem ser lentos / inconvenientes. Se você usa git, então você vai querer usar o excelente plugin Fugitive e seu :Ggrep
comando para pesquisar apenas arquivos registrados no git. Também gosto do Silver Searcher por sua rapidez.
: argdo,: cdo e: bufdo
: cdo e : argdo são úteis para executar comandos do vim em um conjunto de arquivos.
linha de comando
Quando é mais difícil determinar a lista de arquivos que precisam de alterações por meio, :vimgrep
eu recorro aos comandos grep / find da linha de comando para selecionar mais de perto a lista de arquivos que preciso refatorar. Salve a lista em um arquivo de texto e use :e
um mashup de gravações de macro para fazer as alterações que preciso fazer.
Eu acho que quanto menos enferrujado mantenho minhas habilidades de gravação de macro, mais útil eu acho o Vim para refatoração: me sentindo confortável salvando / restaurando de registros, incrementando / diminuindo variáveis de contador de registro, limpando / salvando gravações de macro em arquivo para uso posterior, etc.
Atualizar
Desde que escrevi este, mais videocasts para os métodos que descrevo foram publicados no vimcasts.org (eu encorajo você a assistir TODOS os Vimcasts! ). Para refatoração, observe estes:
Vimgolf também é uma ótima maneira de praticar.
A onipresença dos servidores Language Server Protocol desde que escrevi esta resposta também trouxe alguma capacidade de refatoração para o Vim (e outros editores). IMO, eles estão muito longe de igualar a capacidade de refatorar recursos que você veria em um IDE construído para um propósito (eu os uso e prefiro COC e ALE). Veja outras respostas nesta questão para mais informações!