Sim! Use a cbandeira para :substitute. De :help substitute:
[c] Confirm each substitution. Vim highlights the matching string (with
hl-IncSearch). You can type: :s_c
'y' to substitute this match
'l' to substitute this match and then quit ("last")
'n' to skip this match
<Esc> to quit substituting
'a' to substitute this and all remaining matches {not in Vi}
'q' to quit substituting {not in Vi}
CTRL-E to scroll the screen up {not in Vi, not available when
compiled without the +insert_expand feature}
CTRL-Y to scroll the screen down {not in Vi, not available when
compiled without the +insert_expand feature}
Exemplo de uso é simples como torta:
%s/old/new/c
Isso é muito útil, mas não sabia disso até 2 semanas atrás :-) E está disponível no ol 'vi :-)
Dica de bônus: você também pode querer usar :set nowrapscan; isso evita que o Vim seja agrupado na parte superior quando atingir o fundo. Eu achei isso especialmente útil ao usar a cflag.
A configuração &incsearch( set incsearch) no Vim é realmente útil. Você pode usá-lo junto com um truque útil e pouco conhecido.
O truque é testar sua regex complexa usando o comando /ou ?O Vim usará a &incsearchconfiguração para mostrar correspondências interativamente. Quando estiver satisfeito com a regex, você poderá usar o :%s//replacementvim para usar a pesquisa anterior.
Observe como a parte //está em branco (é onde você coloca o texto para pesquisar). Se você deixar em branco, estará dizendo ao Vim para usar o regex de pesquisa anterior. Com isso, você pode digitar uma regex complexa com /todos os benefícios set incsearche, em seguida, usar o %s//replacementcomando para realmente executar a pesquisa e a substituição.
Se você quiser algo semelhante ao incsearch de :scomandos, consulte o vim-over , mas eu prefiro usar o modo nativo do Vim.
Eu costumava usar uma variante disso: basta usar :%s/pattern/replace/e pressionar upara desfazer, você pode ver as partes que o Vim mudou se tiver hlsearchativado. E você pode substituir este texto novamente por ^R.
Martin Tournoij
7
Minha substituição interativa favorita é pesquisar usando /e percorrer as correspondências usando n.
Em seguida, selecione jogo usando gne, em seguida, spara substituir o texto com o que eu gosto.
E repita movendo para a próxima partida e pressionando.
Esse é um truque muito bom, porque é: (1) interativo, (2) você pode ir para a partida anterior se a ignorar acidentalmente (algo que você não pode usar :s/old/new/gc).
Ayrat 12/09/18
3
No Neovim, há também a 'inccommand'opção que permite visualizar o resultado do :scomando enquanto você o digita.
:%s/pattern/replace/
e pressionaru
para desfazer, você pode ver as partes que o Vim mudou se tiverhlsearch
ativado. E você pode substituir este texto novamente por^R
.Minha substituição interativa favorita é pesquisar usando /e percorrer as correspondências usando n.
Em seguida, selecione jogo usando gne, em seguida, spara substituir o texto com o que eu gosto.
E repita movendo para a próxima partida e pressionando.
fonte
:s/old/new/gc
).No Neovim, há também a
'inccommand'
opção que permite visualizar o resultado do:s
comando enquanto você o digita.fonte
Para o benefício de todos,
incsearch
foi atualizado no vim8 para mostrar também a visualização à medida que você digita o padrãofonte