<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog do Beraldo &#187; vi</title>
	<atom:link href="http://www.rberaldo.com.br/blog/tag/vi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rberaldo.com.br/blog</link>
	<description>Programação, Música, Entretenimento e o que mais me vier à mente</description>
	<lastBuildDate>Wed, 25 Jan 2012 14:23:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Comandos do Editor Vim</title>
		<link>http://www.rberaldo.com.br/blog/comandos-do-editor-vi/</link>
		<comments>http://www.rberaldo.com.br/blog/comandos-do-editor-vi/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 15:25:56 +0000</pubDate>
		<dc:creator>Beraldo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Shell Script (Bash)]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[editor vi]]></category>
		<category><![CDATA[editor vim]]></category>
		<category><![CDATA[Programação Shell]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://www.rberaldo.com.br/blog/?p=84</guid>
		<description><![CDATA[O Vi é um editor de textos do Unix. Ele vem por padrão em todas as distribuições Linux, portanto é bom conhecer alguns de seus comandos básicos. A vantagem desse editor sobre outros, como GEdit ou KEdit, é que o Vi roda em terminal, sem interface gráfica, o que permite utilizá-lo num ambiente de linha de comando, como numa conexão por SSH.]]></description>
			<content:encoded><![CDATA[<p>O <a title="Vi" href="http://pt.wikipedia.org/wiki/Vi" target="_blank" title="Vi" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Vi?referer=');">Vi</a> é um editor de textos do Unix. Ele vem por padrão em todas as distribuições Linux, portanto é bom conhecer alguns de seus comandos básicos. A vantagem desse editor sobre outros, como GEdit ou KEdit, é que o Vi roda em terminal, sem interface gráfica, o que permite utilizá-lo num ambiente de linha de comando, como numa conexão por <a href="http://pt.wikipedia.org/wiki/Ssh" target="_blank" title="ssh" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Ssh?referer=');">SSH</a>.</p>
<p><span id="more-84"></span></p>
<p><a href="#modos">1. Modos de trabalho do Vi</a><br />
<a href="#salvando">2. Salvando arquivos e saindo do editor</a><br />
<a href="#move">3. Movimentando o cursor</a><br />
<a href="#nav">4. Navegação no texto</a><br />
<a href="#move2">5. Movimentando textos</a><br />
<a href="#apagar">6. Apagando texto</a><br />
<a href="#copy">7. Copiando e colando textos</a><br />
<a href="#undo">8. Desfazendo ações</a><br />
<a href="#find">9. Localizando textos</a><br />
<a href="#replace">10. Localizando e substituindo textos</a><br />
<a href="#exec">11. Executando comandos no Shell sem sair do Vi</a><br />
<a href="#insert">12. Inserindo no texto a saída de um comando Shell</a><br />
<a href="#program">13. Facilidades para programadores e desenvolvedores</a><br />
<a href="#conf">14. Configuração do ambiente (comando <code>set</code></a></p>
<h3><a name="modos">1. Modos de trabalho do Vi</a></h3>
<p>O Vi possui dois modos de trabalho: modo de inserção e modo de comando. Ao ser iniciado, o programa estará <strong>sempre</strong> em modo de comando. Para alternar do modo de comando para o modo de inserção, há duas maneiras:</p>
<p>a -&gt; Ao pressionar a tecla &#8220;a&#8221;, o modo de inserção é ativado e o cursor de texto é posicionado logo após o caractere corrente;<br />
i -&gt; Ao pressionar a tecla &#8220;i&#8221;, o modo de inserção é ativado e o cursor de texto é posicionado à esquerda do caractere corrente.</p>
<p>Para alternar do modo de inserção para o modo de comando, basta pressionar a tecla &#8220;ESC&#8221;.</p>
<h3><a name="salvando">2. Salvando arquivos e saindo do editor</a></h3>
<p>Entrar no Vi é fácil. Sair, à primeira vista, é um dilema, podendo causar claustrofobia digital. :P<br />
Os seguintes comandos devem ser executados em modo de comando, claro.</p>
<p>:w -&gt; salva o  arquivo corrente. É possível passar um argumento, para definir o nome do arquivo. Por exemplo: <code>:w arq1.txt</code><br />
ZZ -&gt; salva o documento e sai do Vi. É conhecido como o comando &#8220;Zalva e Zai&#8221;. :)<br />
:wq -&gt; Salva o arquivo e sai do Vi<br />
:w! -&gt; O arquivo será salvo mesmo se aberto no modo somente leitura (<em>readonly</em>)<br />
:q -&gt; Sai do Vi. Se o arquivo não foi salvo, o programa emitirá um alerta.<br />
:q! -&gt; Força a saída, mesmo que o arquivo tenha sido modificado e não tenha sido salvo anteriormente</p>
<p>Os comandos &#8220;:wq&#8221; e &#8220;ZZ&#8221; fazem praticamente a mesma coisa. Porém, &#8220;ZZ&#8221; é mais rápido de se digitar e mais fácil de lembrar (Zalva e Zai!). ;)</p>
<h3><a name="move">3. Movimentando o cursor</a></h3>
<p>Isso parece fácil. Basta usar as setas. Mas e se você estiver num teclado sem as teclas das setas? Pode parecer jurássico, mas pode acontecer. Nesse caso, use os seguintes comandos:</p>
<p>h -&gt; Desloca para a esquerda<br />
j -&gt; Desloca para baixo<br />
k -&gt; Desloca para cima<br />
l -&gt; Desloca para a direita</p>
<p>É possível digitar um número antes desses comandos, informando o número de deslocamentos desejado.</p>
<h3><a name="nav">4. Navegação no texto</a></h3>
<p>[n]$ -&gt; Move o cursor para o fim da linha. Se especificado um número antes do &#8220;$&#8221; (cifrão), move para o final da linha com o número especificado (a linha corrente é 1; a conseguinte é 2 e assim sucessivamente)<br />
^ -&gt; Move o cursor para o início da linha corrente. Se o teclado for ABNT ou similares, com teclas para acentuação, você terá de digitar a tecla duas vezes, para o Vi compreender o comando literalmente, não como um acento para outra letra.<br />
0 (número zero) -&gt; Equivale ao comando &#8220;^&#8221;.<br />
[n]A -&gt; Move o cursor para o fim da linha e entra em modo de inserção. É possível inserir um numero antes do &#8220;A&#8221;, como no comando &#8220;$&#8221;.<br />
[n]G -&gt; Se não for especificado o número &#8220;n&#8221;, o cursor será movido para o fim do arquivo. Caso contrário, desloca o cursor para a linha &#8220;n&#8221;.</p>
<h3><a name="move2">5. Movimentando textos</a></h3>
<p>OBS: <code>^LETRA</code> corresponde à combinação das teclas CTRL e a letra especificada.</p>
<p>^e -&gt; Move o texto para cima, independentemente da posição do cursor.<br />
^y -&gt; Move o texto para baixo, independentemente da posição do cursor.</p>
<h3><a name="apagar">6. Apagando texto</a></h3>
<p>[n]x -&gt; Apaga o caractere sob o cursor. É possível especificar o número de caracteres a serem removidos.<br />
[n]X -&gt; Apaga o caractere à esquerda do cursor. É possível especificar o número de caracteres a serem removidos.<br />
[n]dd -&gt; Apaga a linha corrente. É possível especificar o número de linhas a serem removidas após a linha corrente.<br />
D -&gt; Apaga todos os caracteres da posição corrente até o final da linha.<br />
d$ -&gt; Equivale ao comando &#8220;D&#8221;.<br />
d^-&gt; Apaga todos os caracteres da posição corrente até o início da linha.<br />
dw -&gt; apaga os caracteres da posição corrente até o final da palavra.</p>
<h3><a name="copy">7. Copiando e colando textos</a></h3>
<p>Para copiar uma linha de textos, usamos o comando &#8220;yy&#8221;. É possível usar &#8220;[n]yy&#8221; para definir o número de linhas a serem copiadas.</p>
<p>Para colar o texto copiado, usa-se &#8220;[n]p&#8221; para colar à direita do cursor ou &#8220;[n]P&#8221; para colar à esquerda do cursor. O número &#8220;n&#8221; (opcional) determina o número de vezes que o texto será colado.</p>
<h3><a name="undo">8. Desfazendo ações</a></h3>
<p>Não existe o famoso CTRL+Z no Vi. Mas há como desfazer comandos.</p>
<p>u -&gt; Desfaz o último comando<br />
U -&gt; Desfaz todos os comandos executados na linha corrente</p>
<h3><a name="find">9. Localizando textos</a></h3>
<p>/texto -&gt; Busca pela ocorrência da palavra &#8220;texto&#8221; a partir da posição corrente do cursor até o fim do arquivo.<br />
?texto -&gt; Busca pela ocorrência da palavra &#8220;texto&#8221; a partir da posição corrente do cursor até o início do arquivo.<br />
n -&gt; Repete o último comando de busca (<em>next</em>)</p>
<h3><a name="replace">10. Localizando e substituindo textos</a></h3>
<p>Os comandos abaixo assemelham-se à sintaxe dos comandos de substituição do <a href="http://pt.wikipedia.org/wiki/Sed" target="_blank" title="sed" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Sed?referer=');"><code>sed</code></a>.</p>
<p>:s/busca/troca -&gt; Encontra a primeira ocorrência de &#8220;busca&#8221; e a modifica para &#8220;troca&#8221;, na linha corrente.<br />
:s/busca/troca/g -&gt; Faz a mesma coisa que o comando acima, porém o executa em toda a linha.</p>
<p>É possível definir o intervalo de linhas onde a busca será feita, da seguinte forma:</p>
<p>:<em>inicio,fim</em>s/busca/troca.</p>
<p>Por exemplo:</p>
<p>:1.42s/busca/troca -&gt; Executa a troca no intervalo das linhas 1 a 42<br />
:..42s/busca/troca -&gt; Executa a troca a partir da linha atual até a linha 42<br />
:..$s/busca/troca -&gt; Executa a troca a partir da linha atual até o fim do arquivo</p>
<p>A busca pode ser feita usando <a href="http://pt.wikipedia.org/wiki/Express%C3%B5es_regulares" target="_blank" title="Expressões Regulares" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Express_C3_B5es_regulares?referer=');">Expressões Regulares</a>.</p>
<h3><a name="exec">11. Executando comandos no Shell sem sair do Vi</a></h2>
<p>Para executar um comando no shell sems air do Vi, basta proceder da seguinte forma:</p>
<p>:! comando_shell</p>
<p>Por exemplo:</p>
<p>:! ls -l</p>
<h3><a name="insert">12. Inserindo no texto a saída de um comando Shell</a></h3>
<p>O comando anterior executa uma ação no Shell, mas descarta a saída. Se você pretende inserir a saída do comando no texto que está editando no Vi, basta proceder assim:</p>
<p>!! comando_shell</p>
<p>Por exemplo</p>
<p>!! ls -l</p>
<h3><a name="program">13. Facilidades para programadores e desenvolvedores</a></h3>
<h4>Indentação</h4>
<p>Para inserir <a href="http://pt.wikipedia.org/wiki/Endenta%C3%A7%C3%A3o" target="_blank" title="indentação" onclick="urchinTracker('/outgoing/pt.wikipedia.org/wiki/Endenta_C3_A7_C3_A3o?referer=');">indentação</a>, primeiro devemos definir o tamanho da tabulação, usando o comando <code>:set</code> (mais a frente detalharei esse comando).</p>
<p>:set sw=n</p>
<p>Onde &#8220;n&#8221; é o tamanho da tabulação.</p>
<p>Feito isso, poderemos utilizar os seguintes comandos:</p>
<p>[n]&gt;&gt; -&gt; Indenta n linhas (ou apenas a linha corrente se &#8220;n&#8221; for omitido)<br />
[n]&lt;&lt; -&gt; Retira a indentação de n linhas (ou apenas da linha corrente se &#8220;n&#8221; for omitido)</p>
<h4>Correspondência entre parênteses, colchetes e chaves</h4>
<p>Com o cursor sobre um sinal de parênteses, colchete ou chave, execute o comando &#8220;%&#8221;. Se houver um caractere correspondente, o cursor será movido para ele.</p>
<h3><a name="conf">14. Configuração do ambiente (comando <code>set</code></a></h3>
<p>:set &lt;opcão&gt; -&gt; Ativa &lt;opção&gt;<br />
:set no&lt;opção&gt; -&gt; Desativa &lt;opção&gt;<br />
:set &lt;opção&gt;=&lt;valor&gt; -&gt; Define &lt;valor&gt; à &lt;opção&gt;<br />
:set &lt;opção&gt;? -&gt; Exibe o valor de &lt;opção&gt;<br />
:set all -&gt; Exibe todas as opções</p>
<p>Algumas opções do comando set:</p>
<p>ai -&gt; <em>Autoindent</em>. Indentação automática<br />
ic -&gt; <em>Ignore case</em>. Ignora maiúsculas e minúsculas numa busca.<br />
nu -&gt; Numeração de linhas<br />
sw -&gt; <em>shift width</em>. Tamanho da tabulação<br />
sm -&gt; <em>show match</em>. Ao fechar um parêntese, colchete ou chave, o Vi mostra onde ele foi aberto. Caso não haja correspondência, um bip será emitido.</p>
<p>Para não precisar definir todas essas configurações sempre que iniciar o Vi, você pode criar um arquivo de configuração. O Vi busca no arquivo ~/.exrc (arquivo oculto exrc na home do usuário) as configurações iniciais. Logo, você pode criar um arquivo assim:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #804040;">set</span> <span style="color: #668080;">sw</span>=<span style="color: #000000; font-weight:bold;">4</span>
<span style="color: #804040;">set</span> <span style="color: #668080;">ai</span>
<span style="color: #804040;">set</span> <span style="color: #668080;">nu</span></pre></div></div>

<p></p>
<p>Links interessantes:<br />
<a href="http://jamielesouef.com/linux/vim-editor-100-commands-every-admin-should-know/" target="_blank" onclick="urchinTracker('/outgoing/jamielesouef.com/linux/vim-editor-100-commands-every-admin-should-know/?referer=');">Vim Editor : 100 commands every admin should know </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rberaldo.com.br/blog/comandos-do-editor-vi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

