Vi substituir a string atualmente pesquisada

2

Eu sei como posso pesquisar e substituir uma string, seja globalmente ou em uma área selecionada.

Mas tenho o hábito de examinar uma palavra e, em seguida, clicar em * para pesquisar essa palavra. Isso não irá procurar apenas pela palavra string, mas também irá ignorar outras strings das quais a string pesquisada é uma sub-string. Portanto, a pesquisa parece com \<word\> em vez de apenas word .

Agora, gostaríamos de acertar * em uma palavra e substituir todas as ocorrências já pesquisadas e destacadas dessa sequência, sem precisar inseri-la novamente para a pesquisa & substitua o comando. Existe uma boa maneira de fazer isso?

    
por replay 20.10.2016 / 00:12

2 respostas

5

Texto de amostra:

cat
concatenate
scat
dog and cat

Digamos que * é pressionado na primeira linha, ele procurará pelo padrão \<cat\>

Quando a sequência de pesquisa é deixada vazia durante a pesquisa e a substituição, ela reutiliza o último padrão correspondente. Portanto, fazer

:%s//CAT/g

resultará em

CAT
concatenate
scat
dog and CAT


De :h :substitute

If the {pattern} for the substitute command is empty, the command uses the pattern from the last substitute or :global command. If there is none, but there is a previous search pattern, that one is used. With the [r] flag, the command uses the pattern from the last substitute, :global, or search command.


Para alterar o comportamento de * e # para o texto visualmente selecionado para pesquisar somente parte do texto em vez da palavra inteira:

vnoremap * y/<C-R>"<CR>
vnoremap # y?<C-R>"<CR>
    
por 20.10.2016 / 03:39
3

Você pode usar g* em vez de * . De :help gstar

g*          Like "*", but don't put "\<" and "\>" around the word.
            This makes the search also find matches that are not a
            whole word.  {not in Vi}

g#          Like "#", but don't put "\<" and "\>" around the word.
            This makes the search also find matches that are not a
            whole word.  {not in Vi}

E, em seguida, use:

:%s//replacement/g

como @Sundeep sugeriu.

    
por 20.10.2016 / 11:40

Tags