Eu acho que funcionaria apenas quando nenhum '. *' For usado no padrão
AK
10
Não há necessidade de repetir a corda, apenas faça %s/string//ng.
slm
23
(parecido com o que o Gustavo disse, mas além disso:)
Para qualquer pesquisa anterior , você pode fazer simplesmente:
:%s///gn
Um padrão não é necessário, porque ele já está no registro de pesquisa ( @/).
"%" - faz s/em todo o arquivo
"g" - pesquisa global (com vários resultados em uma linha)
"n" - impede qualquer substituição de s/- nada é excluído! nada deve ser desfeito!
(veja: :help s_flagpara mais informações)
(Desta forma, funciona perfeitamente com " Pesquisar texto selecionado visualmente ", conforme descrito em vim-wikia tip171 )
:você está entrando Commandno Command-linemodo para . Agora, tudo o que você escreve depois :está na CLI (Command Line Interface)
%sespecifica todas as linhas. Especificar o intervalo como %significa fazer a substituição em todo o arquivo. A sintaxe para todas as substituições de ocorrências é:%s/old-text/new-text/g
gespecifica todas as ocorrências na linha. Com a gbandeira, você pode fazer com que toda a linha seja substituída. Se este gsinalizador não for usado, apenas a primeira ocorrência na linha será substituída.
n especifica a saída do número de ocorrências
//barra dupla representa a omissão de replacement text. Porque só queremos encontrar.
Uma vez obtido o número de ocorrências, você pode pressionar a Ntecla para ver as ocorrências uma a uma.
Para encontrar e contar em determinado intervalo de número de linha 1 a 10:
: 1,10s / olá // gn
Observe %que o arquivo inteiro é substituído por ,números de linha separados.
Para localizar e substituir em uma faixa específica do número da linha 1 a 10:
Pesquise com *para fazer uma "pesquisa limitada" do que está sob o cursor ou fazer uma /patternpesquisa padrão .
Use :%s///gnpara obter o número de ocorrências. Ou você pode usar :%s///npara obter o número de linhas com ocorrências.
** Eu realmente poderia encontrar um plug-in que fornecesse a mensagem "corresponder N de N 1 em N 2 linhas" com cada pesquisa, mas, infelizmente.
Nota: Não se confunda com a formulação complicada da saída. O primeiro comando pode fornecer algo como 4 matches on 3 lineso último pode fornecer 3 matches on 3 lines. Embora tecnicamente preciso, o último é enganoso e deveria dizer 'correspondência de 3 linhas'. Então, como você pode ver, realmente nunca há necessidade de usar a última forma ('n' apenas). Você obtém as mesmas informações, mais claramente e mais usando o formulário 'gn'.
:g/xxxx/d
) é terrível, perigosa e inferior a outras nesta página. Desmarque-o.Respostas:
Isso excluirá todas as linhas com padrão e relatará quantas foram excluídas. Desfaça para recuperá-los depois.
fonte
O jeito é
:% s / padrão // gn
fonte
Você precisa da
n
bandeira. Para contar palavras, use:e uma palavra particular:
Consulte a
count-items
seção de documentação.Se você simplesmente digitar:
então a linha de status fornecerá o número de correspondências no vi também.
fonte
:% s / string / string / g dará a resposta.
fonte
%s/string//ng
.(parecido com o que o Gustavo disse, mas além disso:)
Para qualquer pesquisa anterior , você pode fazer simplesmente:
Um padrão não é necessário, porque ele já está no registro de pesquisa (
@/
)."%" - faz
s/
em todo o arquivo"g" - pesquisa global (com vários resultados em uma linha)
"n" - impede qualquer substituição de
s/
- nada é excluído! nada deve ser desfeito!(veja:
:help s_flag
para mais informações)(Desta forma, funciona perfeitamente com " Pesquisar texto selecionado visualmente ", conforme descrito em vim-wikia tip171 )
fonte
usar
quando a string do padrão é muito longa e você não gosta de digitar tudo de novo.
fonte
Resposta curta :
Para aprender :
Existem 3 modos no editor de VI como abaixo
:
você está entrandoCommand
noCommand-line
modo para . Agora, tudo o que você escreve depois:
está na CLI (Command Line Interface)%s
especifica todas as linhas. Especificar o intervalo como%
significa fazer a substituição em todo o arquivo. A sintaxe para todas as substituições de ocorrências é:%s/old-text/new-text/g
g
especifica todas as ocorrências na linha. Com ag
bandeira, você pode fazer com que toda a linha seja substituída. Se esteg
sinalizador não for usado, apenas a primeira ocorrência na linha será substituída.n
especifica a saída do número de ocorrências//
barra dupla representa a omissão dereplacement text
. Porque só queremos encontrar.Uma vez obtido o número de ocorrências, você pode pressionar a
N
tecla para ver as ocorrências uma a uma.Para encontrar e contar em determinado intervalo de número de linha 1 a 10:
%
que o arquivo inteiro é substituído por,
números de linha separados.Para localizar e substituir em uma faixa específica do número da linha 1 a 10:
fonte
Eu sugiro fazer:
*
para fazer uma "pesquisa limitada" do que está sob o cursor ou fazer uma/pattern
pesquisa padrão .:%s///gn
para obter o número de ocorrências. Ou você pode usar:%s///n
para obter o número de linhas com ocorrências.** Eu realmente poderia encontrar um plug-in que fornecesse a mensagem "corresponder N de N 1 em N 2 linhas" com cada pesquisa, mas, infelizmente.
Nota: Não se confunda com a formulação complicada da saída. O primeiro comando pode fornecer algo como
4 matches on 3 lines
o último pode fornecer3 matches on 3 lines
. Embora tecnicamente preciso, o último é enganoso e deveria dizer 'correspondência de 3 linhas'. Então, como você pode ver, realmente nunca há necessidade de usar a última forma ('n' apenas). Você obtém as mesmas informações, mais claramente e mais usando o formulário 'gn'.fonte