Eu gostaria de otimizar meu fluxo de trabalho "localizar e substituir" no Vim. É algo que faço frequentemente, como tenho certeza que a maioria de vocês também. Geralmente algo como - copie um bloco e mude o nome de uma variável em alguns lugares. Eu sei, eu sei, que provavelmente dispara o reflexo "por que você está copiando e colando código", mas não vamos seguir esse caminho ... Existem muitos casos de uso válidos :)
Conheço bem os comandos de pesquisa e substituição: :s
ou :%s
mas não gosto deles. Obriga-me a digitar o nome completo da variável que estou procurando e para o que estou mudando. Talvez exista uma maneira melhor de corrigir a quantidade de digitação :%s
? Costumo usar nomes de variáveis descritivos longos, de modo que isso é realmente um diferencial para mim. Eu também não gosto de como digitar um nome de variável a partir do zero é propenso a erros de digitação e pode consumir tempo e inteligência para caçar erros de digitação. Eu prefiro digitá-lo uma vez e depois copiar e colar para evitar isso inteiramente, se possível.
Meu fluxo de trabalho atual usa alguma combinação de movimento / puxar / selecionar / pesquisar / colocar para mover o arquivo e substituir um por um. Não é ótimo, mas tem o benefício de evitar a digitação de nomes de variáveis completos. Talvez eu precise digitar as primeiras letras com /
ou usar outro comando de movimento (por exemplo fx
), dependendo do que estiver ao redor, e pressione ve
a tecla para selecionar a palavra inteira. Também não me importo de ter que repetir para cada instância. Eu nunca faço uma busca completa substituir sem confirmar cada alteração. Mas seria muito preferível se eu pudesse repetir a ação de substituição com um único pressionamento de tecla (o que não posso fazer com esse método). cada substituição é geralmente algo como n
, em seguida, ve
em seguida, p
(ou pior "0p
)
Existe uma maneira mais rápida?
n
ve
"0p
. Que, infelizmente, não pode ser replicado com apenas um.
n ce ctrl-r 0 <esc> n.n.n.n.n.n.
.
repete o último "bloco de comando" (não tem certeza do termo exato. por exemplo: mover + ação + texto. por exemplo:cwtoto<Esc>
(mude do cursor para o final da palavra com "toto"))c/foo<enter>bar<Esc>
(mude do cursor para pouco antes " foo "e substitua por" bar "). Você pode mover (com cursor, hjkl ou um número + hjkl (faz isso n vezes), G (ir para o final do arquivo) / algo (ir logo antes" algo "), etc) e pressione.
para refazer o mesmo 'bloco de comando'