Existe uma pesquisa para o comando replace?

12

Eu realmente gosto da incsearchfuncionalidade do Vim . Existe uma maneira de tê-lo, ou algo semelhante, funcionando enquanto eu faço uma substituição?

Por exemplo, se estiver no modo normal, digite:

:%s/potato/

Posso potatodestacar todos os s no meu arquivo, assim como eles são destacados incsearchquando escrevo

/potato

?

Isso já me ajudaria bastante ao usar expressões regulares. Um muito, muito bom ter, quando escrevo isto:

:%s/potato/banana/

Ele substituiria potatos por bananas e destacaria-os - talvez as substituições devam ter uma cor diferente. Não foi possível "confirmar" a alteração até que eu pressione enter.

Estou usando o neovim no momento, caso isso ajude.

kikito
fonte
1
Você quer dizer incsearch? hlsearchdeve funcionar ootb, se eu digitar :%s/potato/\0/para substituir potatopor si mesmo, então eu vejo todas as correspondências destacadas.
jjaderberg
Inded, eu quis dizer incsearch. Substituindo na minha pergunta, obrigado.
Kikito
Provavelmente não é kosher, mas :/pattern<CR>funciona bem e adicione o% s e a string de substituição. Thene novamente refina a pesquisa e usa CTR-R / para colar na parte de pesquisa de #:%s/
Steve Steve
Anexar ao @jjaderberg: :%s/potato/carrot/cpermitirá que você pule ("confirme") suas substituições (adicione gpara substituir todas as instâncias na mesma linha) e hlsearchvocê as verá com antecedência.
Rolf

Respostas:

9

Após algumas pesquisas, encontrei esse problema do NeoVim , que por sua vez foi encerrado por este PR , o que me levou à inccommandconfiguração. Adicionando isso ao meu arquivo de configuração:

set inccommand=nosplit

faz com que o NeoVim se comporte quase exatamente como solicitei na minha pergunta. Não encontrei algo equivalente ao Vim comum, mas não o procurei com muita energia.

kikito
fonte
4
Em sua situtaion, para incsearchem subtitutions (sendo um Vimmer preguiçosos e lentos em adotar coisas neo) eu provavelmente procurar batata ( /potato) apreciando ordinária pesquisa incremental highlighighting, e, em seguida, substituir com uma pesquisa vazia: %s//banana. Mas não sei como isso se compara set inccommand=nosplitem outros aspectos.
jjaderberg
Obrigado! Eu não conhecia o "truque de pesquisa vazio". Vou tentar lembrar quando estou vim nos meus servidores
Kikito
1
@jjaderberg, pelo jeito que gostei tanto do inccommandcenário que fiz um asciinema mostrando-o no trabalho, caso isso o motive a dar uma chance ao neovim
kikito:
2
@jjaderberg Eu acho que vale a pena ser uma resposta.
Rich Rich
Infelizmente, o link para o asciinema está morto agora.
SJY