Freqüentemente, sinto necessidade de executar uma substituição que terá correspondências dispersas em um arquivo grande e com expressões não triviais de pesquisa e substituição.
Por exemplo, digamos que eu tenha algumas chamadas de função como okFunction(arg1, arg2 arg3)
. Os argumentos diferem a cada chamada de função, é claro. Agora diga que eu descobri uma função melhor que não precisa arg2
. Eu posso ajustar facilmente o arquivo inteiro com
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
Embora conceitualmente simples, não tenho certeza de que tenho a sintaxe correta nesse padrão bastante longo. A c
bandeira realmente ajuda aqui, mas o problema é que, ao pedir confirmação, o vim não mostra com o que a correspondência será substituída. Quero dizer, ele mostrará a expressão de substituição, mas não o resultado avaliado. Se confirmar a substituição com y
, o vim saltará imediatamente para a próxima partida e não poderei ver se cometi algum erro.
Eu encontrei o plug - in vim-over que resolve parcialmente o problema, mas apenas se todas as matemáticas estiverem visíveis na tela quando você estiver digitando o comando. Quando você pressiona enter, o comportamento é exatamente o mesmo que descrevi acima e não recebo uma visualização.
Portanto, existe uma maneira de o vim avaliar a expressão de substituição ao pedir confirmação nos comandos substitutos?
%
, verifique se o resultado é o que eu estava esperando e, em seguida, use a substituição com %
(são apenas algumas teclas:) :<up><c-b>%
. Claramente, uma opção de visualização seria muito mais eficiente que isso. Embora nenhum patch está disponível talvez um poderia envolver a substituição em uma função vimscript com este tipo de opção, mas que soa como um monte de trabalho ...