Vim encontrar e modificar

https://www.linux.com/learn/tutorials/8255-vim-tips-the-basics-of-search-and-replace –:> link original em inglês e tradução eu vou terminar quando estiver afim ( na verdade quem traduziu foi o google :D )

Resumo pesquisa:

/ –> Realiza pesquisas no Vim.

n –> passa para a próximo item pesquisado.

N –> vai para  item pesquisado anterior.

Resumo pesquisa e substitui:

:s/pesquisar/substituir/ –> somente na linha atual

:%s/pesquisar/substituir/ –> em todo o documento (mais usado)

:%s/pesquisar/substituir/ –> pesquisa no documento todo, mas so vai modificar a primeira ocorrencia na linha.

:%s/pesquisar/substituir/g –> pesquisa no documento todo, mas vai modificar todas as ocorrencias nas linhas.

:10,18s/pesquisar/subtituir/g –> modifica as linhas 10 a 18 do documento, modificando todas as ocorrencias nas linhas.

Você pode fazer uma busca no modo normal usando / searchstring.

Depois de executar uma pesquisa uma vez, você pode repeti-lo usando n em modo de comando, ou N para inverter a direção.

Quando você quiser procurar por uma seqüência de texto e substituí-la por outra cadeia de texto, você pode usar a sintaxe:

:8,10 s/procura/substitui/g

A faixa é opcional, se você acabou de executar: s / procura / substituição /, ele irá procurar apenas a linha atual e corresponder apenas a primeira ocorrência de um termo.

Na maioria das vezes, isso não é suficiente, então você pode adicionar uma faixa assim:

: 8,10 s / pesquisa / substituir / g

Nesse exemplo, o intervalo é de linha 8 para a linha 10. Eu também acrescentou a opção “global”, que diz ao Vim para substituir todas as ocorrências em uma linha, e não apenas a primeira ocorrência. Sem adição de g, sua pesquisa irá corresponder apenas a primeira instância de uma string em qualquer linha.

Outra forma de especificar o intervalo é para entrar no modo visual e selecionar as linhas que você deseja pesquisar e pressione: para entrar no modo de comando. Para entrar no modo visual de modo normal, pressione v para selecionar o modo visual regular, ou V para a seleção de linha, ou Ctrl-v para seleção de bloco. Em seguida, selecione o intervalo em modo visual e pressione:, seguido pelo comando de busca que deseja usar.

Se você quiser procurar um arquivo inteiro, você pode usar% para indicar que à medida que o intervalo:

:%s/search/replace/g

Você também pode querer ser pedida confirmação antes Vim faz uma substituição. Para fazer isso, adicione a confirmar a opção (c) ao final da pesquisa e substituição de comando% s :: Pesquisa / / substituir / gc. Quando você executar esta pesquisa, Vim lhe dará um aviso de que é algo como isto:

substitua foo (y / n / a / q / l / ^ E / ^ Y)?

O “y” e “n” são auto-explicativos, mas que sobre o resto? Para dizer Vim para ir em frente e substituir todas as instâncias do texto correspondente, responder com um. Se você perceber que você realmente não quer fazer as mudanças, você pode dizer Vim para encerrar a operação usando q. Para dizer Vim para fazer a mudança atual e depois parar, use l, para o último.

^ E e ^Y permitem rolar o texto usando Ctrl-e e Ctrl-y.

Onde a terra

Pesquisas na Vim colocar o cursor no primeiro caractere da string combinada por padrão, se você procurar Debian, seria colocar o cursor sobre o D. Isso é geralmente bom, mas Vim possui algumas opções para compensar a posição do cursor, desde o início da string combinada.

Para pousar o último caractere na seqüência correspondente, ao invés do começo, e adicionar um / a sua pesquisa:

/ Debian / e

Isso vai colocar o cursor sobre o n em vez do D. Vim também permite que você especifique um cursor compensado por linha, ou desde o início ou o fim da string. Para que a terra cursor duas linhas acima da corda correspondente, por exemplo, use / string/-2. Para colocar o cursor duas linhas abaixo da corda, use / string / +2.

Para compensar, desde o início da seqüência, adicione um b / ou / s com o offset que você deseja. Por exemplo, mover-se três personagens desde o início da pesquisa, você pode usar / string / s ou 3 / string / b +3 – “. Começar” “s” para “start” ou “b” para Para contar a partir do final da cadeia, o uso de / e em vez disso, so / string/e-3 irá colocar o cursor sobre a terceira personagem a partir do último caractere da string combinada.
Seguinte: caracteres especiais Vim de

Agora que temos a sintaxe de pesquisa básica coberto, é hora de olhar para alguns dos caracteres especiais Vim para fazer pesquisas um pouco mais eficiente. Procurando por uma seqüência literal está fora de questão, se você está tentando corresponder cada URL em um arquivo, ou a cada comentário em uma festa ou um script Perl.

O primeiro caractere que você deseja conhecer é o ponto humilde. Em uma pesquisa, um ponto ou ponto (.), Irá corresponder a qualquer caractere único. Faça uma busca rápida usando /. e você verá que ele corresponde, literalmente, tudo – letras, números, espaços em branco, o kit todo e kaboodle.

E se você quiser combinar um termo no início ou no final de uma linha? Vim usa o sinal de interpolação para coincidir com o início de uma linha (^) e do sinal de dólar para coincidir com o fim de uma linha ($). Por exemplo, para encontrar qualquer linha em um script que começa com um comentário, você pode usar ^ #. Para encontrar linhas vazias, é só usar ^ $ que irá corresponder a qualquer linha sem quaisquer caracteres.

Para coincidir com o espaço em branco, use o operador \ \ s. Se você quiser encontrar linhas vazias que contêm apenas espaço em branco, você poderia usar ^ \ \ s. * $. Isso irá corresponder a linhas com espaços em branco, mas não outros caracteres – não vai corresponder as linhas vazias, sem espaço em branco. Por outro lado, o operador \ \ S irá corresponder sem espaço em branco caracteres.

O \ \ d operador irá corresponder a qualquer dígito em uma pesquisa, enquanto o \ \ operador D irá corresponder a qualquer não-dígito em uma pesquisa. Para corresponder a qualquer caractere maiúsculo, use \ \ u, enquanto \ \ l irá corresponder a qualquer caractere em minúsculas. Usando \ \ U irá corresponder a qualquer caractere não-letra maiúscula, e \ \ L irá corresponder a qualquer caractere não-minúsculas.

Há uma sutil diferença entre encontrando qualquer caractere em minúsculas e encontrando qualquer caractere não-letra maiúscula, e encontrando qualquer caractere maiúsculo e encontrando qualquer caractere não-minúsculas. Se você usar \ \ u ele só irá coincidir com uma letra maiúscula – mas se você usar \ L \ que irá corresponder a qualquer letra maiúscula e qualquer outro personagem que não é uma letra minúscula, por isso seria combinar espaços em branco, dígitos, pontuação, e assim por diante.

O que acontece quando você realmente deseja procurar um caractere especial, como um sinal de dólar ou acento circunflexo? Os caracteres especiais podem ser precedidos por uma barra invertida, portanto, use \ \ $ para procurar um sinal de dólar em seu arquivo, ou \ \ ^ a procurar o acento circunflexo, e assim por diante. Note que o caractere de barra invertida é em si um caráter especial, por isso você precisa usar duas barras invertidas juntos.

Você também pode desejar para delinear os termos de busca por limites de palavra. Digamos que você faça uma busca por sig usando Vim. Isso irá corresponder a sig, assinatura, assinatura, e uma série de outras cordas que você não deseja corresponder. Pode parecer uma boa idéia para incluir espaços em cada lado do termo de pesquisa, assim:

s / termo / substituição / gc

Isso vai fazer um trabalho melhor de igualar a seqüência de pesquisa apenas, mas vai perder a seqüência, se é no final de uma frase, ou separado por uma vírgula. Para se certificar de que você está começando o jogo certo, use \ \ para coincidir com o fim de uma palavra. Assim, a frase de pesquisa seria melhor escrita como:

s / \ \ <term\\> / substituição / gc

Contagem de quantidade

Se você tiver sorte, seus pais lhe ensinaram desde cedo a não ser ganancioso. Essa é uma regra de bom na vida, e, geralmente, uma boa regra de pesquisar e substituir usando Vim também.

Vim permite que você especifique quantos de algo que você deseja corresponder adicionando quantificadores para o termo. Alguns quantificadores são considerados “gananciosos”, porque eles combinam o máximo de caracteres especificados como possível. Outros não são gananciosos, porque corresponde a um número específico ou tão pouco quanto possível.

Como um exemplo, o quantificador * informa ao Vim para coincidir com 0 ou mais de um carácter. Assim, uma pesquisa como / * abc irá corresponder abc, abby, e absolutamente.

Para corresponder a um ou mais, use o \ \ quantificador +. A busca de / abc \ \ + irá corresponder abc, mas não abby ou absolutamente. Para zero ou um, use \ \ =, que seria compatível com abc, abby, e absolutamente.

Vim pode ser ainda mais preciso, e permitirá que você especifique um número exato ou o intervalo. A sintaxe para isso é \ \ {0,10}, onde a busca se igualar 0 a 10 instâncias do personagem. Por exemplo, para encontrar uma string com pelo menos cinco caracteres maiúsculos, mas não mais que sete, você pode usar / \ \, o que reparte-se como “combinar com o começo de uma palavra, em seguida, de cinco a sete caracteres maiúsculos, em seguida, no final de uma palavra. ”

Se você quiser combinar um número de caracteres exatamente, use \ \ {n}, onde n é o número. Quer saber todas as palavras de três letras em um arquivo? Use / \ \ e você encontrará cada seqüência de três letras no arquivo. Claro, que pode coincidir com palavra não strings, então você pode usar / \ \ vez. O \ \ w diz ao Vim para corresponder “caracteres da palavra”, por isso não irá corresponder a dígitos, pontuação e afins.

Você também pode reduzi-lo para “no máximo” ou “pelo menos” um certo número de caracteres. Como você já aprendeu, a sintaxe para combinar um mínimo para o número máximo de ocorrências é \ \ {x, y}, com x sendo o mínimo e y sendo o máximo. Então, basta colocar o número mínimo ou máximo, e manter a vírgula. Para ver isso em ação, corrida / \ \ <\ \ w \ \ {5,}. Isso irá corresponder a palavras, pelo menos, cinco caracteres. Para combinar palavras não superior a cinco cartas, use / \ \ <\ \ w \ \ {, 5}.

Finalmente, você pode usar \ \ {-} para dizer Vim para coincidir com o mínimo possível. Vamos dizer que você está tentando combinar tags de HTML em um arquivo. Procurando por jogos muito. Se você tem um parágrafo incluído em

tags, Vim iria coincidir com o parágrafo inteiro ao invés de marcas individuais. Para coincidir com etiquetas individuais, use. Isso seria dizer Vim para corresponder personagem e depois parar.

Vamos ser insensível

Como você está sem dúvida consciente, as pesquisas em Vim são case-sensitive. GNOME, Gnome, gnome e são completamente diferentes, tanto quanto Vim está em causa. Mas e se você quiser procurar todos os três ao mesmo tempo, sem recorrer a sério regex-foo? Simples – Vim para dizer ser maiúsculas de minúsculas usando ignorecase set. Uma vez ignorecase está definido, uma busca por gnome irá coincidir com o GNOME, Gnome, e gnome.

Se, depois de um tempo, você decidir que quer a maiúsculas e minúsculas, alterne-o novamente usando: noignorecase set.

Se você não quiser alternar maiúsculas e minúsculas e fora o tempo todo, você pode simplesmente usar o \ \ e \ \ c C modificadores. O \ \ modificador c diz ao Vim para ser maiúsculas e minúsculas, e \ \ C diz ao Vim para ser case-sensitive.

Por exemplo, para procurar para trás ao longo do texto, garantindo que a busca é case-sensitive, o uso? \ \ Cpattern, então? \ \ CGNOME só vai coincidir com o GNOME não, gnome ou Gnome. Claro, isso funciona para pesquisas para a frente, bem, então você pode usar / \ \ CGNOME vez.

Outro truque é usar a opção smartcase. Uso: set ignorecase smartcase, e se o seu termo de pesquisa tem pelo menos uma letra maiúscula, Vim irá mudar para maiúsculas e minúsculas, caso contrário ele irá usar maiúsculas e minúsculas pesquisa.

Finalmente, se você quiser preservar maiúsculas e minúsculas, mas busca de uma palavra que pode ter uma letra maiúscula ou minúscula letra em uma posição, você poderia usar um intervalo em vez. Para corresponder a SuSE ou SUSE, você pode usar / S [Uu] SE.

Faixas são muito úteis em seu próprio direito. Para corresponder a até j, por exemplo, você pode usar [aj], ou [^ aj] para corresponder a qualquer caractere que não é um meio j. Isso funciona com letras maiúsculas e dígitos também, [AQ] irá corresponder a qualquer letra maiúscula de A a Q, e [1-5] que corresponde a qualquer dígito de 1 a 5.

Correspondência de um ou mais termos

Digamos que você deseja substituir Kang ou Kodos com o estrangeiro termo mais genérico. Em vez de executar duas pesquisas, você pode usar galhos, que são separados por um caractere de barra invertida e tubo.

:% S / Kang \ \ | Kodos / alien / gc

Você não está limitado a dois mandatos, qualquer um. Se você quiser substituir Larry, Moe, Curly e com Stooge, você poderia usar:% s / Larry \ \ | Moe \ \ | Curly / Stooge / gc