Obra: Vim/Buscas e substituições
Matéria: Português
buscas para fazer uma busca certifique se de que está em modo normal pressione digite expressão ser procurada para encontrar primeira ocorrência de foo no texto foo busca palavra foo repete última busca teste posiciona cursor três linhas após ocorrência da palavra teste para encontrar as próximas ocorrências tecle para encontrar as ocorrências anteriores tecle fazer buscas pelo valor hexadecimal de um caractere localiza letra que em hexadecimal tem valor dica um meio mais rápido para encontrar próxima ocorrência de uma palavra sob cursor teclar para encontrar uma ocorrência anterior da palavra sob cursor tecle para isso cursor deve estar posicionado sobre palavra que deseja procurar substituições para fazer uma busca certifique se de que está em modo normal em seguida digite use comando conforme será explicado para substituir foo por bar na linha atual foo bar para substituir foo por bar da primeira décima linha do arquivo foo bar para substituir foo por bar da primeira última linha do arquivo foo bar ou simplesmente foo bar significa para vim final do arquivo representa arquivo atual comando possui muitas opções que modificam seu comportamento exemplos busca usando alternativas end if while for buscará endif endwhile endfor observe que necessário escapar os caracteres caso contrário eles serão interpretados como caracteres comuns quebra de linha quebra nde linha ignorando maiúsculas minúsculas cpalavra usando vim encontrará palavra palavra ou até mesmo palavra uma dica colocar no seu arquivo de configuração vimrc veja como editar preferências set ignorecase ignora maiúsculas minúsculas na bucsca set smartcase se sua busca contiver maiúsculas ele passa considera las set hlsearch mostra que está sendo buscado em cores set incsearch ativa busca incremental se você não sabe ainda como colocar estas preferências no arquivo de configuração pode ativa las em modo de comando precedendo as com dois pontos assim set ignorecase procurando palavras repetidas um exemplo prático da expressão regular que elimine todas as linhas nas quais houver uma palavra que se repita pelo menos uma vez ou seja mantenha apenas palavras que só aparecem uma vez digamos que tenhamos seguinte arquivo apple apple peach peach peach beer banana banana banana solução seria casando tudo seguido por uma quebra de linha seguido pelo padrão precedente multilinha hello world buscará hello world separados por qualquer número de espaços incluindo quebras de linha buscará as três seqüências hello world hello world hello world buscar linhas de até caracteres de comprimento representa começo de linha apaga todas as tags html xml de um arquivo apaga linhas vazias ou remover duas ou mais linhas vazias entre parágrafos diminuindo para uma só linha vazia você pode criar um mapeamento colocar no seu vimrc map no exemplo acima um mapeamento para reduzir linhas em branco sucessivas para uma só remove não dígitos não pega números remove final de linha dos windows que tem código hexadecimal igual troc
não dígitos não pega números remove final de linha dos windows que tem código hexadecimal igual troca palavras de lugar usando expressões regulares troca palavras de lugar inserir numeração de linhas do arquivo line modificando todas as tags html para minusculo move linhas para além da linha comando global buscando um padrao gravandoo em outro arquivo error errors txt para copiar linhas começadas com error para final do arquivo faça error copy obs comando copy pode ser abreviado co ou ainda você pode usar para mais detalhes leia co entre as linhas que contiverem fred joe substitua fred joe isto aquilo gic as opções gic correspondem global ignore case confirm podendo ser omitidas deixando só global pegar caracteres numericos jogar no final do arquivo inverter ordem das linhas do arquivo apagar as linhas que contém line commented line commented copiar determinado pardrão para um registro pattern normal ayy copiar linhas que contém um padrão linha subsequênte para final padrão copy reordenando parágrafos digamos que você tenha um arquivo com seguinte conteúdo begin rsubsection example redacted item stuff did item also did other things end rsubsection begin rsubsection example redacted item stuff did item also did other things end rsubsection begin rsubsection example redacted item stuff did item also did other things end rsubsection begin rsubsection example redacted item stuff did item also did other things end rsubsection para reordenar esses blocos de modo que bloco fique no começo bloco fique no final fazemos seguinte adicionamos uma linha ao final do arquivo put em seguida executamos seguinte comando global example normal dapggp na prática vim moverá os blocos para começo usando comando normal dap delete parágrafo gg que salta para começo do arquivo comando de colar dicas para colocar última busca em uma substituição faça control novo dupla barra corresponde ao ultimo padrão procurado portanto comando abaixo fará substituição da ultima busca por casinha casinha filtrando arquivos com vimgrep por vezes sabemos que aquela anotação foi feita mas no momeno esquecemos em qual arquivo está no exemplo abaixo procuramos palavra dicas partir da nossa pasta pessoal pela palavra dicas em todos os arquivos com extensão txt equivale home user lvimgrep dicas txt ls comando copiar partir de um ponto co vim sempre necessita de um intervalo inicial final mas se você usar ele considera primeira linha como segundo ponto do intervalo no caso acima estamos dizendo nas entrelinhas linhas de forma hanáloga podemos usar como referência um padrão qualquer palavra comando acima diz partir da linha que contém palavra incluindo as próximas linhas mova para primeira linha ou seja antes da linha dicas das lista vi br fonte http groups yahoo com group vi br message problema essa deve ser uma pergunta comum suponha seguinte conteúdo de arquivo várias linhas texto texto linha texto texto linha texto texto linha texto texto linha texto texto linha várias linhas gostaria de um c
xto texto linha texto texto linha texto texto linha texto texto linha várias linhas gostaria de um comando que mudasse para várias linhas texto texto linha texto texto linha texto texto linha texto texto linha texto texto linha várias linhas ou seja somasse cada um dos números entre os textos especificando como range as linhas awk begin if match print texto substr rstart rlength texto mas muitos sistemas não tem awk logo melhor solução mesmo usar vim let texto texto submatch let observação intervalo ou seja da linha até linha para maiores informações sobre buscas substituições help help help pattern dicas do dicas fonte http www dicas com br dicas php junção de linhas com vim colaboração rubens queiroz de almeida recentemente precisei combinar em um arquivo duas linhas consecutivas arquivo original continha linhas como matrícula senha yatvind kned matrícula senha invanbabnit assim por diante eu precisava converter este arquivo para algo como matrícula senha yatvind kned matrícula senha invanbabnit para isto basta emitir comando matrícula explicando matrícula busca no arquivo inteiro pela palavra matrícula na primeira coluna substitui quebra de linha pelos caracteres esta substituição faz junção das duas linhas adjacentes