You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
6.6 KiB
138 lines
6.6 KiB
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
|
|
|
<!-- Enable responsiveness on mobile devices--> |
|
<!-- viewport-fit=cover is to support iPhone X rounded corners and notch in landscape--> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, viewport-fit=cover"> |
|
|
|
<title>Julio Biason .Me 4.3</title> |
|
|
|
<!-- CSS --> |
|
<link rel="stylesheet" href="https://blog.juliobiason.me/print.css" media="print"> |
|
<link rel="stylesheet" href="https://blog.juliobiason.me/poole.css"> |
|
<link rel="stylesheet" href="https://blog.juliobiason.me/hyde.css"> |
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700|Abril+Fatface"> |
|
|
|
|
|
|
|
|
|
|
|
</head> |
|
|
|
<body class=" "> |
|
|
|
<div class="sidebar"> |
|
<div class="container sidebar-sticky"> |
|
<div class="sidebar-about"> |
|
|
|
<a href="https://blog.juliobiason.me"><h1>Julio Biason .Me 4.3</h1></a> |
|
|
|
<p class="lead">Old school dev living in a 2.0 dev world</p> |
|
|
|
|
|
</div> |
|
|
|
<ul class="sidebar-nav"> |
|
|
|
|
|
<li class="sidebar-nav-item"><a href="/">English</a></li> |
|
|
|
<li class="sidebar-nav-item"><a href="/pt">Português</a></li> |
|
|
|
<li class="sidebar-nav-item"><a href="/tags">Tags (EN)</a></li> |
|
|
|
<li class="sidebar-nav-item"><a href="/pt/tags">Tags (PT)</a></li> |
|
|
|
|
|
</ul> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="content container"> |
|
|
|
<div class="post"> |
|
<h1 class="post-title">07. Procurar em Vários Arquivos</h1> |
|
<span class="post-date"> |
|
2015-12-22 |
|
|
|
</span> |
|
<p>Essa é a parte em que mais uma vez você vai ter que pesquisar sobre |
|
expressões regulares.</p> |
|
<span id="continue-reading"></span> |
|
<p>Já vimos o comando de pesquisa, que tem um modo inteiro só pra si<sup class="footnote-reference"><a href="#1">1</a></sup>.</p> |
|
<p>Mas como fazer para encontrar ocorrências de uma palavra em mais de um arquivo? |
|
Para isto, existe o comando <code>:grep</code>.</p> |
|
<p>O grep é uma ferramente comum em Unixes (e Linux) em geral, mas o VIM tem |
|
scripts que fazem a mesma coisa em outros sistemas operacionais (por exemplo, |
|
Windows). Assim, o mesmo comando vai funcionar da mesma forma não importando |
|
qual sistema você esteja utilizando.</p> |
|
<p>Como o <code>:grep</code> usa outras funcionalidades existentes no VIM, iremos ver um pouco |
|
mais do que simplesmente "Procurar", mas isso é necessário.</p> |
|
<p>Como o modo de pesquisa, <code>:grep</code> precisa de uma expressão regular. Ao contrário |
|
do modo de pesquisa, o <code>:grep</code> também precisa de uma lista de arquivos a serem |
|
pesquisados. Por baixo dos panos, o que o VIM faz é chamar o comando "grep" (do |
|
Unix), verifica o resultado e permite pular facilmente entre os elementos |
|
encontrados (então todas as opções disponíveis para o grep podem ser passadas |
|
diretamente de dentro do VIM).</p> |
|
<p>Por exemplo, para pesquisar por arquivos que contém a palavra "void", você só |
|
precisa executar o comando <code>:grep void *</code> (onde <code>:grep</code> é o comando, <code>void</code> é a |
|
expressão a ser pesquisada e <code>*</code> é a lista de arquivos a serem pesquisados). Como |
|
o grep (o aplicativo do Unix) somente pesquisa arquivos no diretório |
|
especificado (no nosso caso anterior, como não foi passado diretório algum, |
|
será considerado o diretório atual), o <code>:grep</code> (o comando do VIM) também não vai |
|
entrar em nenhum subdiretório (de novo, porque o VIM simplesmente chama o grep |
|
[aplicativo do Unix] e facilita pular entre os elementos encontrados). Para |
|
fazer uma procura que encontre a expressão além do diretório atual, basta |
|
adicionar a opção "-r" para o grep (<code>:grep void -r *</code>).</p> |
|
<p>Ok, agora que você sabe usar o <code>:grep</code>... Como é que você vê os resultados?</p> |
|
<p>Primeira informação periférica: O VIM tem um tipo de "janela" especial, chamada |
|
"Quickfix". Essa "janela" é, na verdade, um "split" da tela (e mais a frente |
|
veremos como trabalhar com "splits" e abas). Para exibir o Quickfix, é usado o |
|
comando <code>:copen</code>; para fechar o Quickfix, basta usar <code>:copen</code> de novo. Para |
|
passar para o próximo elemento existente no Quickfix, use <code>:cnext</code> (ou |
|
simplesmente <code>:cn</code>); para passar para o elemento anterior, use <code>:cprevious</code> (ou |
|
simplesmente <code>:cp</code>); para mover o cursor para a posição do elemento atual do |
|
Quickfix, use <code>:cc</code> (que é simplesmente <code>:cc</code> mesmo).</p> |
|
<p>A segunda informação periférica: Como eu falei, usar <code>:grep {expressão} *</code> irá |
|
procurar "{expressão}" a partir do diretório atual. Para descobrir qual é o |
|
"diretório atual" para o VIM, use <code>:pwd</code> (de "print working directory", que |
|
também é um comando Unix); para mudar para outro diretório, utilize o comando |
|
<code>:cd {diretório}</code>, como você faria num shell normal.</p> |
|
<p>(E antes que alguém pergunte: Sim, você pode fazer um grep fora do diretório |
|
atual passando o diretório em questão no próprio comando do grep: <code>:grep void /tmp -r</code> irá procurar por "void" em todos os arquivos existentes no diretório |
|
/tmp.)</p> |
|
<p><sup class="footnote-reference"><a href="#1">1</a></sup> Apenas para lembrar, <code>/</code> entra no modo de pesquisa, onde só é preciso entrar |
|
a expressão regular a ser encontrada; para passar para a próxima |
|
ocorrência, use <code>n</code> em modo normal; para passar para a ocorrência anterior, |
|
use <code>N</code> também em modo normal; para remover o realce das palavras |
|
encontradas, use <code>:noh</code> em modo de comando.</p> |
|
<div> |
|
|
|
<div style="float:left"> |
|
<< <a href="./06-macros-de-teclado">Macros de Teclado</a> |
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div style="float:right"> |
|
<a href="./08-localizar-substituir">Localizar e Substituir</a> >> |
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
</body> |
|
|
|
</html>
|
|
|