<?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>Rafael Cambuí &#187; Linux</title>
	<atom:link href="http://www.gilix.com.br/rafael_cambui/wordpress_2.7/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7</link>
	<description>Desenvolvimento web &#38; Coluna Informativa</description>
	<lastBuildDate>Fri, 13 Aug 2010 14:24:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Consultando LDAP com PHP</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/07/27/consultando-ldap-com-php/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/07/27/consultando-ldap-com-php/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 14:01:53 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[css + js]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Php + Mysql]]></category>
		<category><![CDATA[a]]></category>
		<category><![CDATA[adp]]></category>
		<category><![CDATA[ad_pgp]]></category>
		<category><![CDATA[b]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[d]]></category>
		<category><![CDATA[e]]></category>
		<category><![CDATA[f]]></category>
		<category><![CDATA[g]]></category>
		<category><![CDATA[h]]></category>
		<category><![CDATA[i]]></category>
		<category><![CDATA[j]]></category>
		<category><![CDATA[k]]></category>
		<category><![CDATA[l]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[ldap_php]]></category>
		<category><![CDATA[m]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[n]]></category>
		<category><![CDATA[o]]></category>
		<category><![CDATA[p]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[q]]></category>
		<category><![CDATA[r]]></category>
		<category><![CDATA[s]]></category>
		<category><![CDATA[t]]></category>
		<category><![CDATA[u]]></category>
		<category><![CDATA[v]]></category>
		<category><![CDATA[x]]></category>
		<category><![CDATA[z]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.7/?p=161</guid>
		<description><![CDATA[&#60;?php // Variaveis Globais $ldap_server = "seudominio.com.br"; /*Usamos o nome do dominio ou o nome do Servidor do dominio Casa seja 1 servidor Apenas*/ $dominio = "seudominio\\"; /*Aqui usaremos o nome Netbios do dominio*/ // Usuario para autenticacao na Base LDAP $auth_user = "seudominio\usuario_de_consulta"; /*nome Netbios\usuario*/ $auth_pass = "senha_do_usuario"; /*Senha do usuario do dominio*/ // [...]]]></description>
			<content:encoded><![CDATA[<pre class="php" style="border: 1px solid #d0d0d0; color: #000066; background-color: #f0f0f0;">&lt;?php
// Variaveis Globais
$ldap_server = "seudominio.com.br";
/*Usamos o nome do dominio ou o nome do Servidor do dominio Casa
seja 1 servidor Apenas*/
$dominio = "seudominio\\"; /*Aqui usaremos o nome Netbios do dominio*/

// Usuario para autenticacao na Base LDAP
$auth_user = "seudominio\usuario_de_consulta";
/*nome Netbios\usuario*/

$auth_pass = "senha_do_usuario";
/*Senha do usuario do dominio*/

// Caminho LDAP do Dominio
$base_dn = "OU=DOMINIO,DC=seudominio,DC=com,DC=br";
/*Nome do Dominio completo + OU principal*/

// Caminho LDAP do Grupo para consulta
$filter = "(&amp;(objectClass=user)(memberOf=CN=grupo,OU=ou_do_grupo,
OU=ou_principal,DC=seudominio,DC=com,DC=br))";

//Funcao para conectar na base LDAP listar os usuarios de um grupo.

if (($connect=@ldap_connect($ldap_server))) {
 if (($bind=@ldap_bind($connect, $auth_user, $auth_pass))) {
 if (($search=@ldap_search($connect, $base_dn, $filter))){
 $number_returned = ldap_count_entries($connect,$search);
 $info = ldap_get_entries($connect, $search);

   for ($i=0; $i &lt; $info["count"]; $i++){

     $user_pure = $info[$i]["samaccountname"][0];
     $user_up = strtoupper($user_pure);
     echo "Ususario - $user_up&lt;br&gt;";
   }

 }

 }

}
// Fecha a conexao LDAP.
ldap_close($connect);
?&gt;

Fonte: www.revistaphp.com.br</pre>
<p><strong>Mais informações sobre AD:<br />
</strong>http://www.learnthat.com/Software/learn/1295/Introduction-to-Active-Directory/</p>
<p><strong>Abaixo uma breve descrição das variáveis:</strong><br />
$ldap_server -&gt; essa variavel deve apontar para o servidor Active Directory, que pode ser preenchida com um nome FQDN ou o IP do servidor, ou seja, será a base onde consultaremos o(s) usuário(s).</p>
<p>$dominio -&gt; essa variável deve conter o nome NETBIOS do domínio que é o nome curto do domínio do seu Active Directory. Suponhamos que seu domínio fosse phpldap.com.br , o nome curto(NETBIOS) para esse domínio seria phpldap que atribuímos a variável ‘$dominio’.</p>
<p>$auth_user -&gt; esse variável deve conter o nome de um usuário existente na base do Active Diretory. Suponhamos que você tenha na sua base o usuário ‘teste’, nesse caso usando o exemplo acima com o nome do domínio phpldap a variável seria preenchida assim ‘phpldap\teste’. Esse usuário serva para se conectar a base de dados.<br />
$auth_pass -&gt; essa variável deve ser preenchida com a senha do usuário teste do Active Directory, conforme exemplo acima.</p>
<p>$base_dn -&gt; usando o exemplo do domínio phpldap.com.br essa variável ficaria da seguinte forma ‘OU=phpldap,DC=phpldap,DC=com,DC=br’.</p>
<p>$filter -&gt; deve ser preenchida com o caminho LDAP completo do grupo no qual você deseja pesquisar os usuários.</p>
<p>Obs: o código acima consulta usuários na base de dados de um servidor Active Directory, e também pode ser adaptado para consultar usuários em uma base de dados OPENLDAP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/07/27/consultando-ldap-com-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Configurar login automático no Linux Fedora 9 ou 10</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/07/08/configurar-login-automatico-no-linux-fedora-9-ou-10/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/07/08/configurar-login-automatico-no-linux-fedora-9-ou-10/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 11:21:38 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[automatico]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[login automático fedora 9]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.7/?p=144</guid>
		<description><![CDATA[Para configurar o login automático do único usuário da máquina no Gnome, geralmente utilizamos a &#8220;Janela de Início de Sessão&#8221; que, como os mais experientes sabem, fornece opções para o GDM. Ocorre que no Fedora, desde a versão 9, não há como fazer isso. Mas a solução para aqueles que sentem falta da opção é [...]]]></description>
			<content:encoded><![CDATA[<p>Para configurar o login automático do único usuário da máquina no Gnome, geralmente utilizamos a &#8220;Janela de Início de Sessão&#8221; que, como os mais experientes sabem, fornece opções para o GDM.</p>
<p>Ocorre que no Fedora, desde a versão 9, não há como fazer isso.</p>
<p>Mas a solução para aqueles que sentem falta da opção é simples!</p>
<p>Basta criar um arquivo de texto (use o Gedit ou outro editor de sua preferência), dando a ele o nome de &#8220;custom.conf&#8221; (sem as aspas, obviamente). Certifique-se de que o arquivo mencionado contenha apenas o seguinte texto:</p>
<p>[daemon]<br />
TimedLoginEnable=true<br />
TimedLogin=pinduvoz<br />
TimedLoginDelay=0</p>
<p>(não se esqueça de substituir &#8220;pinduvoz&#8221; &#8212; meu login e nome de usuário, usado aqui como exemplo &#8212; pelo seu login e nome de usuário)</p>
<p>Agora mova o arquivo &#8220;custom.conf&#8221; para a pasta &#8220;/etc/gdm/&#8221; com os comandos abaixo:</p>
<p>$ su<br />
[senha do root]<br />
# mv custom.conf /etc/gdm/</p>
<p>A mesma tarefa (mover o arquivo) pode ser feita com o Nautilus, aberto como root:</p>
<p>$ su<br />
[senha do root]<br />
# nautilus</p>
<p>e a partir daí &#8220;seu mouse&#8221;.</p>
<p>Agora, no próximo boot, o usuário indicado no arquivo &#8220;custom.conf&#8221; será logado no Gnome diretamente, sem senha ou opções.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/07/08/configurar-login-automatico-no-linux-fedora-9-ou-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ligando a máquina remotamente e desativando o botão power</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/12/ligando-a-maquina-remotamente-e-desativando-o-botao-power/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/12/ligando-a-maquina-remotamente-e-desativando-o-botao-power/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 12:38:55 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ligando]]></category>
		<category><![CDATA[ligando remotamente]]></category>
		<category><![CDATA[maquina]]></category>
		<category><![CDATA[remota]]></category>
		<category><![CDATA[wakeup]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.7/?p=142</guid>
		<description><![CDATA[Configurando o gerenciamento de energia usando ACPI O ACPI (Advanced Configuration and Power Interface &#8211; Interface de Configuração e Gerenciamento de Energia Avançado) é uma camada de gerenciamento de energia que opera a nível de sistema operacional. Apresenta os mesmos recursos que o APM, e outros como o desligamento da máquina por teclas especiais de [...]]]></description>
			<content:encoded><![CDATA[<p>Configurando o gerenciamento de energia usando ACPI O ACPI (Advanced Configuration and Power Interface &#8211; Interface de Configuração e Gerenciamento de Energia Avançado) é uma camada de gerenciamento de energia que opera a nível de sistema operacional. Apresenta os mesmos recursos que o APM, e outros como o desligamento da máquina por teclas especiais de teclado, controle de brilho e contraste de notebooks, suspend para RAM, suspend para disco, redução de velocidade de CPU manualmente, monitoramento de periféricos, temperatura, hardwares, etc. Desta forma, o ACPI varia de sistema para sistema em questões relacionadas com suporte a recursos especiais, estes dados são armazenados em tabelas chamadas DSDT. O Linux inclui suporte a recursos ACPI genéricos entre placas mãe, recursos específicos devem ser extraídos diretamente da BIOS e disassemblados manualmente para a construção de um kernel com suporte específico a tabela DSDT do hardware (não falarei das formas de se fazer disso aqui, somente do suporte genérico). Quanto mais nova a versão do kernel, maiores as chances do seu hardware ser suportado plenamente pelo ACPI, principalmente no caso de notebooks. Para compilar estaticamente, marque com Y a opção ACPI, depois marque os módulos que você quer que ele monitore: button (botão power), fan (ventoinhas), etc. Se compilou como módulo, adicione o nome do módulo acpi no arquivo /etc/modules. Não há problema em compilar também o suporte a APM, pois não causará problemas com um kernel com ACPI também compilado. Caso não saiba quais módulos ACPI seu sistema aceita, marque o suporte a todos e carregue-os. Após isto, entre no diretório /proc/acpi e de um ls entrando nos diretórios e vendo se existem arquivos dentro deles. Remova o módulo correspondente daqueles que não tiver conteúdo. Após isto, instale o daemon acpid e configure-o para monitorar algumas características do seu sistema. Por padrão o acpid monitora o botão POWER, assim se você pressionar o power, seu sistema entrará automaticamente em run-level 0, fechando todos os processos e desligando sua máquina. O suporte a ACPI pode ser desativado de 3 formas: Removendo seu suporte do kernel, passando o argumento acpi=off ao kernel (caso esteja compilado estaticamente) ou removendo o módulo de /etc/modules (caso tenha compilado como módulo. Após isto, remova o daemon acpid do seu sistema.</p>
<p>Ativando WakeUP on Lan Algumas placas mãe ATX possuem suporte a este interessante recurso, que permite sua máquina ser ligada através de uma rede. Isto é feito enviando-se uma seqüência especial de pacotes diretamente para o MAC (endereço físico) da placa de rede usando um programa especial. Para usar este recurso, seu sistema deverá ter as seguintes características: Placa mãe ATX Fonte de alimentação ATX compatível com o padrão 2.0, com fornecimento de pelo menos 720ma de corrente na saída +3v. Placa de rede com suporte a WakeUP-on-Lan (WOL), você poderá confirmar isto vendo um conector branco de 3 terminais instalado na placa que é o local onde o cabo wake-up é conectado. Suporte na BIOS também deverá ter a opção para WakeUP-on-Lan. Com todos esses ítens existentes, instale em uma máquina da rede o pacote etherwake. Depois disso, pegue o MAC address a placa de rede da máquina que tem o wakeup on lan e na máquina da rede onde instalou o pacote execute o seguinte comando:</p>
<p>    ether-wake AA:BB:CC:DD:EE:FF</p>
<p>Onde AA:BB:CC:DD:EE:FF é o endereço MAC da placa de rede. A máquina deverá ligar e realizar o procedimento padrão de POST normalmente. Algumas das situações onde o WOL não funciona é quando sua rede é controlada por Switches (devido a natureza de funcionamento deste equipamentos) ou caso esteja atrás de um roteador que não faz proxy arp.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/12/ligando-a-maquina-remotamente-e-desativando-o-botao-power/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Calculo para mascara de rede</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/calculo-para-mascara-de-rede/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/calculo-para-mascara-de-rede/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 16:08:04 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[calculo]]></category>
		<category><![CDATA[mascara de rede]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.7/?p=134</guid>
		<description><![CDATA[Para saber uma rede pega o número 256 e subtrai da rede qual queira saber feito isso pegue a diferença entre os dois e procure saber qual número que elevando a dois irá dar essa diferença, e então pegue esse número e subtraia de 32 e a diferença vai ser a rede. Exemplo: Para saber [...]]]></description>
			<content:encoded><![CDATA[<p>Para saber uma rede pega o número 256 e subtrai da rede qual queira saber<br />
feito isso pegue a diferença entre os dois e procure saber qual número que<br />
elevando a dois irá dar essa diferença, e então pegue esse número e subtraia<br />
de 32 e a diferença vai ser a rede.</p>
<p>Exemplo:<br />
Para saber a rede com final 192</p>
<p>192 &#8211; 256 = 64</p>
<p>2 elevado a 6 = 64</p>
<p>então 32 &#8211; 6 = 26</p>
<p>a rede vai ser 0.0.0.0/26</p>
<p>Para fazer o inverso use a cabeça e se vire, o calculo está ai rsrs&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/calculo-para-mascara-de-rede/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recuperando Senha do Mysql</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/recuperando-senha-do-mysql/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/recuperando-senha-do-mysql/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 11:51:21 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[recuperar senha do mysql]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.7/?p=132</guid>
		<description><![CDATA[Eu Trabalho com vários servidores MySQL, e há uns dias atrás me deparei com um problema um tanto quanto chato: perda de senha do MySQL. =P Bom, vamos ao que interessa né? Primeiro mate o processo do mysql (não utilize a opção -9): # killall mysqld Agora inicie o MySQL em modo seguro (safe mode): [...]]]></description>
			<content:encoded><![CDATA[<p>Eu Trabalho com vários servidores <em>MySQL</em>, e há uns dias atrás me deparei com um problema um tanto quanto chato: perda de senha do MySQL. =P</p>
<p>Bom, vamos ao que interessa né? <img src='http://www.gilix.com.br/rafael_cambui/wordpress_2.7/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Primeiro mate o processo do mysql (não utilize a opção -9):</p>
<p><strong># killall mysqld</strong></p>
<p>Agora inicie o MySQL em modo seguro (safe mode):</p>
<p><strong># safe_mysqld &#8211;skip-grant-tables &amp;</strong></p>
<p>Ou</p>
<p><strong># /usr/bin/safe_mysqld &#8211;skip-grant-tables &amp;</strong></p>
<p>Agora conecte-se ao servidor MySQL usando o cliente do mysql:</p>
<p><strong># mysql</strong></p>
<p>Ou</p>
<p><strong># /usr/bin/mysql</strong></p>
<p>Após conectar-se ao servidor MySQL, acesse o banco MySQL, digitando:</p>
<p>&gt; <strong>use mysql;</strong></p>
<p>Agora vamos definir a nova senha para o usuário root do MySQL:</p>
<p>&gt; <strong>update user set password = password(&#8216;digite sua nova senha aqui&#8217;) where user=&#8217;root&#8217; and host=&#8217;localhost&#8217;;</strong></p>
<p>Ah, e não esqueça de recarregar os privilégios, digitando:</p>
<p>&gt; <strong>flush privileges;</strong></p>
<p>Agora você poder sair do cliente do MySQL, digite:</p>
<p>&gt; <strong>quit</strong></p>
<p>Agora vamos desligar o modo de segurança do MySQL, execute:</p>
<p><strong># /etc/init.d/mysqld stop</strong></p>
<p>E enfim, vamos iniciar o MySQL com a nova senha de root:</p>
<p><strong># /etc/init.d/mysqld start</strong></p>
<p>Bom, é isso, espero que minha  <a style="border-bottom: 1px dotted; color: #006600; text-decoration: underline;" onclick="hwClick16796689490933(1209839552);return false;" onmouseover="hw16796689490933(event, this, '1209839552'); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='solid';" onmouseout="hideMaybe(event, this); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='dotted 1px'; " href="http://www.vivaolinux.com.br/dica/Recuperar-senha-de-root-do-MySQL/#">dica</a> seja de grande valor para todos.</p>
<p>Abraço e boa sorte =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/recuperando-senha-do-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando editor Vi</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/utilizando-editor-vi/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/utilizando-editor-vi/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 11:10:45 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[editor vi]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.7/?p=129</guid>
		<description><![CDATA[&#8220;vi&#8221; é a sigla para &#8220;Visual Interface&#8221;. A origem desse nome se deve ao seguinte fato: quando o vi foi criado (começo da década de 80), não era comum existirem editores de textos como nos dias de hoje. Naquela época, você digitava um texto mas não podia vê-lo! Isso mesmo! Em 1992, foi criado o [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;vi&#8221; é a sigla para &#8220;Visual Interface&#8221;. A origem desse nome se deve ao seguinte fato: quando o vi foi criado (começo da década de 80), não era comum existirem editores de textos como nos dias de hoje. Naquela época, você digitava um texto mas não podia vê-lo! Isso mesmo! Em 1992, foi criado o vim (Vi IMitator), um clone fiel ao vi, porém com muitas outras funcionaliades, que só foram sendo adicionadas. Algum tempo depois, o vim passou a ser chamado de `Vi IMproved&#8217; (vi melhorado).<br />
O vim é um dos editores de textos mais utilizados no mundo Unix. Em alguns sistemas, existe um link simbólico (/bin/vi) apontando para o /usr/vim. Em outros, o /bin/vi é o executável, só que executa diretamente o vim. Muita gente acha que usa vi, mas na verdade utiliza o vim, e eles têm algumas diferenças. O que você verá abaixo fala sobre o vim.<br />
O vim é um editor de textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo, possui sistema de autocorreção, auto-identação, seleção visual, macros, seleção vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais. Ele não é exclusivo do Unix, ou seja, pode ser executado em outras plataformas, como Amiga, MacOS, Sun, Windows entre outras.<br />
Existe também o gvim, que é o vim em modo gráfico, com todas as funcionalidades do vim em pleno funcionamento, o que muda é apenas o modo gráfico mesmo.<br />
O vim possui vários modos, ou seja, estados em que ele se encontra. São eles: modo de inserção, comandos, linha de comando, visual, busca e reposição. Abordarei os dois principais:<br />
<b>Modo de inserção e de comandos</b><br />
Para identificar o modo (estado) do vim, basta visualizar o rodapé da tela.<br />
Agora, vamos à prática. Para executar o vim, utilize:<br />
$ vi => Abre o vim vazio, sem nenhum arquivo e exibe a tela de apresentação.<br />
$ vi arquivo => Abre o arquivo de nome &#8220;arquivo&#8221;.<br />
$ vi arquivo + => Abre o arquivo de nome &#8220;arquivo&#8221;, com o cursor no final do mesmo.<br />
$ vi arquivo +10 => Abre o arquivo de nome &#8220;arquivo&#8221;, com o cursor na linha 10.<br />
$ vi arquivo +/Copag => Abre o arquivo de nome &#8220;arquivo&#8221;, na primeira ocorrência da palavra &#8220;Copag&#8221;.<br />
Ao executar o vim, ele inicia diretamente em modo de comando. Para comprovar, é só olhar na última linha (rodapé) e não vai haver nada lá. Isso quer dizer que você não conseguirá escrever nada, pode digitar a vontade que só vai ouvir beeps. Para começar a escrever, pressione &#8220;i&#8221; em seu teclado. O vim entra em modo de inserção, que você comprova (como falado anteriormente) pelo rodapé da tela, onde fica a seguinte marcação:<br />
- &#8211; &#8212; INSERT &#8211;<br />
Suponha que você já digitou o bastante, e quer salvar, por segurança. Pressione a tecla ESC para voltar em modo de comandos. E veja os comandos para salvar/sair:<br />
:w => Salva o arquivo que está sendo editado no momento.<br />
:q => Sai.<br />
:wq => Salva e sai.<br />
 <img src='http://www.gilix.com.br/rafael_cambui/wordpress_2.7/wp-includes/images/smilies/icon_mad.gif' alt=':x' class='wp-smiley' />  => Idem.<br />
ZZ => Idem.<br />
:w! => Salva forçado.<br />
:q! => Sai forçado.<br />
:wq! => Salva e sai forçado.<br />
Então, você editou uma boa quantidade de textos e quer salvar:<br />
:w<br />
Agora, quer voltar a editar o texto:<br />
i<br />
Lembre que utilizando o &#8220;i&#8221; para inserção, a mesma se inicia inserindo texto antes do cursor. Veja agora outros subcomandos de inserção de texto:<br />
A => Insere o texto no fim da linha onde se encontra o cursor<br />
o => Adiciona uma linha vazia abaixo da linha corrente<br />
O => Adiciona uma linha vazia acima da linha corrente<br />
Ctrl + h => Apaga último caracter à esquerda<br />
Voltando ao modo de comando:<br />
Veja agora subcomandos para movimentação pelo texto:<br />
Ctrl + f => Passa para a tela seguinte.<br />
Ctrl + b => Passa para a tela anterior.<br />
H => Move o cursor para a primeira linha da tela.<br />
M => Move o cursor para o meio da tela.<br />
L => Move o cursor para a última linha da tela.<br />
h => Move o cursor para caracter a esquerda.<br />
j => Move o cursor para linha abaixo.<br />
k => Move o cursor para linha acima.<br />
l => Move o cursor para caracter a direita.<br />
w => Move o cursor para o início da próxima palavra (não ignorando a pontuação).<br />
W => Move o cursor para o início da próxima palavra (ignorando a pontuação).<br />
b => Move o cursor para o início da palavra anterior (não ignorando a pontuação).<br />
B => Move o cursor para o início da palavra anterior (ignorando a pontuação).<br />
0 (zero) => Move o cursor para o início da linha corrente.<br />
^ => Move o cursor para o primeiro caracter não branco da linha.<br />
$ => Move o cursor para o fim da linha corrente.<br />
nG => Move o cursor para a linha de número &#8220;n&#8221;<br />
(susbstitua n pelo número da linha)..<br />
G => Move o cursor para a última linha do arquivo.<br />
<b>Copiando e colando textos no vim (utilizando o mouse)</b><br />
Selecione o texto necessário com o botão esquerdo do mouse. Quando você for colar, saiba que o texto será colado a partir de onde se encontra o cursor (esse que aparece, às vezes piscando e às vezes não, quando você está digitando). Para colar, depois de ter selecionado o texto, você pode utilizar uma dessas opções:<br />
1) Pressionando o botão direito do mouse;<br />
2) Pressionando o botão direito + botão esquerdo juntos;<br />
3) Pressionando o botão do meio do mouse (mouse de 3 botões);<br />
Observação: Lembre-se que o vim deve estar no modo de inserção.<br />
<b>Usando o modo visual do vim</b><br />
Entre no modo visual: v<br />
Agora, utilize as teclas direcionais (setas) do teclado, para selecionar o texto desejado.<br />
Pressione e cole, utilizando a tecla &#8220;p&#8221; (paste).<br />
Veja agora como apagar um determinado texto:<br />
Utilizando normalmente as teclas Backspace/Delete, ou entrando em modo visual (v) e pressionando a tecla Delete.<br />
Você pode remover até o final de uma palavra, utilizando: dw<br />
Pode também remover até o final de uma frase: d$<br />
<b>Desfazendo uma ação</b><br />
É claro que você pode desfazer uma ação que você considera errado, ou que errou ao digitar o texto. É só utilizar: u<br />
Se você precisar voltar o texto na tela, utilize as teclas Ctrl + r.<br />
<b>Subcomandos para localização de texto</b><br />
/palavra => Procura pela palavra ou caracter acima ou abaixo do texto.<br />
?palavra => Move para a ocorrência anterior da palavra (para repetir a busca use &#8220;n&#8221;).<br />
n => Repete o último comando utilizando / ou ?.<br />
N => Repete o último comando / ou ? ao contrário (baixo para cima).<br />
Ctrl+g => Mostra o nome do arquivo, o número da linha corrente e o total de linhas.<br />
<b>Mais opções para remoção de caracteres</b><br />
x => Apaga o caracter onde o cursor estiver.<br />
dd => Apaga a linha inteira onde o cursor estive<br />
D => Apaga a linha a partir da posição do cursor até o fim.<br />
J => Une a linha corrente à próxima.<br />
:5dd => Removeas próximas 7 linhas a partir da posição do atual do cursor (qualquer número).<br />
<b>Mais para copiar e colar</b><br />
:yy => Copia a linha onde o cursor se encontra.<br />
:5yy => Copia as próximas 5 linhas a partir da posição atual do cursor.<br />
:p => Cola o que foi copiado na linha abaixo do cursor atual.<br />
<b>Opções para substituição de textos</b><br />
rCARACTER => Substitui o caracter onde o cursor se encontra pelo caracter especificado em CARACTER.<br />
RTEXTO => Substitui o texto corrente pelo texto digitado (sobrepõe).<br />
cw => Remove a palavra corrente para substituição.<br />
cc => Remove a linha corrente para substituição.<br />
C => Substitui o restante da linha corrente, esperando o texto logo após o comando.<br />
J => Une a linha corrente à próxima.<br />
:s/velho/novo => Substitui a primeira ocorrência de &#8220;velho&#8221; por &#8220;novo&#8221; na linha corrente.<br />
:% s/velho/novo => Substitui em todo o arquivo (%) a primeira ocorrência de &#8220;velho&#8221; por &#8220;novo&#8221; em cada linha.<br />
:% s/velho/novo/g => Substitui em todo o arquivo (%), todas (g) as ocorrências de &#8220;velho&#8221; por &#8220;novo&#8221;.<br />
:% s/velho/novo/gc => Igual ao anterior, mas pedindo confirmação para cada substituição.<br />
:% s/^String[0-9]//gc => Expressões regulares também funcionam, como no sed.<br />
:% s/./\u&#038;/gc => Converte para maiúsculas (\u) o primeiro caracter (.) de cada linha.<br />
<b>Abreviações</b><br />
:ab => Mostra todas as abbr.<br />
:abc[lear] => Remove todos.<br />
:iab => Apenas para modo de inserção.<br />
:iabc[lear] => Tira todos de inserção.<br />
:cab => Apenas p/modo de comando ( : ).<br />
:cabc[lear] => Tira todos os modos de comando.<br />
:una vc => Tira ab para vc.<br />
Observação: Pontuação, espaço ou o ENTER, disparam a expansão de uma abreviação. Porém, Ctrl+] também pode ser usado, para expandir sem adicionar caracteres.<br />
<b>Opções para o comando SET</b><br />
:set<br />
autowrite aw => Salva a cada alteração.<br />
backspace bs => Comportamento backspace (1 ou 2).<br />
errorbell eb => Campainha de erro.<br />
expandtab et => Troca tab por espacos.<br />
fileformat=dos ff => Converte o arquivo para DOS.<br />
hidden hid => Preserva o buffer.<br />
hlsearch hls => Elumina a última procura.<br />
ignorecase ic => Case insensitive na busca.<br />
incsearch is => Ilumina procura enquanto digita.<br />
laststatus=2 => Mostra linha de estado.<br />
lazyredraw lz => Não redesenha em macros.<br />
lines=N => Múmero de linhas na tela.<br />
magic => Usar mágicas na procura de padrões.<br />
number nu => Mostra núm da linha.<br />
report=N => Mostra aviso quando N linhas mudaram (0=sempre).<br />
showcmd => Mostra o comando que se está fazendo.<br />
showmatch sm => Mostra o casamento de {},[],().<br />
smartcase scs => Assume &#8220;noic&#8221; quando tiver maiúsculas.<br />
textwidth=N => Quebra de linha do texto.<br />
undolevels ul=N => Guarde os N últimos comandos para desfazer (padrão=1000).<br />
vb t_vb= => Retira o &#8220;beep&#8221; de erro.<br />
<b>Agora invertendo maiúsculas/minúsculas</b><br />
5~ => Inverte os 5 próximos caracteres.<br />
g~$ => Inverte todos os caracteres até o fim da linha.<br />
seleciona, u => Converte para minúsculas.<br />
seleciona, U => Converte para maiúsculas.<br />
seleciona, ~ => Inverte.<br />
Observação: Onde está escrito &#8220;seleciona&#8221;, é para fazer utilizando o modo visual (v).<br />
Agora veja como definir coluna de quebra de linha (problema que eu tive quando iniciei no aprendizado do vim):<br />
:set textwidth=N<br />
Se você já estiver num arquivo pronto:<br />
:set wm=5 => O número 5 aqui são as colunas que serão &#8220;cortadas&#8221;.<br />
gqG => Até o final do arquivo.<br />
Vamos ver agora o que podemos fazer pressionando a tecla &#8220;Ctrl&#8221;:<br />
É claro que é segurando Ctrl + .<br />
No modo de COMANDO:<br />
A => Incrementa um número (Add)<br />
X => Decrementa um número<br />
S => ScrollLock<br />
L => Redesenha tela<br />
V => Modo visual (Visual Vertical)<br />
G => Status do arquivo<br />
M => Início da próxima linha<br />
E => Linha abaixo sem mover cursor<br />
Y => Linha acima sem mover cursor<br />
N => Próxima linha (Next)<br />
P => Linha anterior (Previous)<br />
F => PageDown (Forward)<br />
B => PageUp (Backyard)<br />
U => PageUp / 2 (Up)<br />
D => PageDown / 2 (Down)<br />
Agora, no modo de INSERÇÃO:<br />
A => Insere o último texto inserido<br />
I => TAB<br />
S => ScrollLock<br />
H => BackSpace<br />
T => 2 tab&#8217;s no início da linha (Two Tabs)<br />
V => Anula expansão do próximo caractere<br />
J => Enter &#8211; quebra de linha<br />
M => Enter &#8211; quebra de linha<br />
L => Redesenha tela<br />
R => Insere conteúdo do registrador [a-z] (Veja abaixo)<br />
K => Insere um dígrafo (Veja abaixo)<br />
N => Procura palavra no texto atual (Next)<br />
P => Procura palavra no texto atual (Previous)<br />
Y => Copia caractere que está acima (Yank)<br />
Veja os caracteres especiais:<br />
ga => Mostra o código da letra sobre o cursor.<br />
:dig => Mostra todos os dígrafos disponíveis (tabela).<br />
Exemplos: Para fazer um º, use Ctrl+K,-,o (&#8220;Ctrl&#8221;+&#8221;K&#8221;+&#8221;-&#8221;+&#8221;o&#8221;).<br />
Para fazer um ½, use Ctrl+K,1,2 (&#8220;Ctrl&#8221;+&#8221;K&#8221;+&#8221;1&#8243;+&#8221;2&#8243;).<br />
<b>Trabalhando com arquivos e janelas múltiplas</b><br />
Você pode abrir múltiplos arquivos, por exemplo:<br />
$ vim arquivo1 arquivo2<br />
E pode alternar entre as janelas. Veja:<br />
:wn => Grava o atual e vai ao próximo.<br />
:wN => Grava o atual e vai ao anterior.<br />
:args => Mostra todos os arquivos atuais.<br />
:qa => Sai de todas as janelas de uma vez.<br />
:all => Abre todos os arquivos em janelas individuais.<br />
Tecla chave das janelas = Crtl+W<br />
j, seta abaixo => Move para janela abaixo.<br />
k, seta acima => Move para janela acima.<br />
o => Apenas esta janela, fecha todas as outras (Only).<br />
+, &#8211; => Muda o tamanho da janela.<br />
= => Deixa todas as janelas com tamanhos iguais.<br />
<b>Os registradores</b><br />
&#8220;[a-z] => Use o registrador [a-z] para o próximo delete, cópia ou cola.<br />
:reg => Mostra o conteúdo de todos os registradores.<br />
:reg [a-z] => Mostra o conteúdo do registradores [a-z].<br />
Observação: O [a-z] pode ser: 0-9a-z%#:.-=&#8221;<br />
Marcas:<br />
m[a-z] => Marca em [a-z] a posição corrente do cursor.<br />
`[a-z] => Vai até a marca [a-z].<br />
&#8220; => Vai até a posição anterior ao último pulo (alterna).<br />
:marks => Mostra as marcas ativas.<br />
<b>Fazendo gravação de seqüência de comandos</b><br />
q[a-z] => Inicia a gravação de uma seqüência no registrador [a-z].<br />
q[A-Z] => Inicia a gravação, adicionando no registrador [a-z].<br />
q => Pára a gravação.<br />
@[a-z] => Executa a seqüência do registrador [a-z] (5 vezes? 5@a)<br />
Dica: Pode-se colocar o @[a-z] dentro da própria gravação do q[a-z]! Assim ele é executado recursivamente. Muito útil quando há uma procura de padrões na gravação. faz para todas as ocorrências.<br />
<b>Mapeamentos</b><br />
:map :r!date => Mapeamento em modo de comando.<br />
:imap :r!date => Mapeamento em modo de inserção.<br />
:cmap r!date => Mapeamento em modo linha de comando.<br />
:vmap :r!date => Mapeamento em modo visual.<br />
Exemplos:<br />
&#8220;html: negrito no trecho selecionado<br />
:vmap d`pa # html: negrito no trecho selecionado<br />
&#8220;liga/desliga autoIndent<br />
:map ,si :set ai!:echo &#8220;autoIndent=&#8221;&#038;ai<br />
&#8220;mostrar os espaços em branco no fim das linhas<br />
:map / *$^M<br />
Através dos mapeamentos é possível &#8220;encurtar&#8221; comandos, ou seja, abreviá-los. Conheça as sintaxes:<br />
Comment => Ciano<br />
Constant => Roxo<br />
Identifier => Ciano<br />
PreProc => Azul escuro<br />
Special => Vermelho<br />
Statement => Amarelo<br />
String => Roxo<br />
Type => Verde<br />
Todo => Preto, fundo marrom<br />
Error => Branco, fundo vermelho<br />
Ignore => Preto, fundo preto! &#8211; esconde<br />
<b>Utilizando o recurso de expandtab</b><br />
Mas, o que isso faz? Transforma todos os TABs em espaços. Podemos ativar dentro do próprio vim, utilizando o comando:<br />
:set expandtab<br />
Para desabilitar:<br />
:set noexpandtab<br />
Podemos colocar também no arquivo ~/.vimrc a seguinte linha:<br />
set expandtab<br />
O arquivo ~/.vimrc pode ser usado para muitas configurações, e essa é uma delas. Existe ainda o arquivo ~/.exrc, mas não entraremos em detalhes.<br />
Podemos incluir a saída de um comando no vim, utilizando:<br />
:r!comando<br />
Por exemplo:<br />
:r!rpm -q kernel<br />
Incluiria o seguinte resultado, dentro do seu texto (isso na minha máquina):<br />
kernel-2.4.18-3<br />
Dicas diversas do vim:<br />
 <img src='http://www.gilix.com.br/rafael_cambui/wordpress_2.7/wp-includes/images/smilies/icon_mad.gif' alt=':x' class='wp-smiley' /> it => Igual :wq, mas só grava se tiver sido alterado algo no arquivo.<br />
:map N_ARQ ^R=expand(&#8220;%:t:r&#8221;)^M<br />
Imprime no arquivo o próprio nome do arquivo editado quando N_ARQ é digitado.<br />
Agora, veja como alinhar o texto:<br />
:left<br />
:right<br />
:center<br />
E para fazer uma busca de 2 palavras ao mesmo tempo:<br />
/palavra1\|palavra2<br />
O vim é um editor de textos com centenas de opções, comandos, strings&#8230; Enão dá para abordar tudo aqui. Por isso, a melhor maneira de conhecê-lo a fundo é usando-o.<br />
Agora, veja quem colaborou com a criação das dicas, e de onde eu tirei tanta informação:<br />
Revista do Linux (Ed. 04 &#8211; Vi, vim e venci &#8211; Aurélio);<br />
Página do Aurélio (www.verde666.org);<br />
Dicas-L (expandtab) (www.Dicas-L.unicamp.br);<br />
Dicas enviadas pelo amigo Uziel (uhfn@ig.com.br)<br />
Vários tutoriais recolhidos pela internet.<br />
Agradeço a todos aqueles que contribuiram direta e/ou indiretamente com os tutoriais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2009/06/04/utilizando-editor-vi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
			<div id="jquery_pagebar">
		
			<div id="pages">  <span id="number"> Navigation</span> <a href="http://www.gilix.com.br/rafael_cambui/wordpress_2.7/category/linux/feed/page/2/" title="Older Entries" >&raquo;</a></div>
			<div id="slider"></div>
		</div>
		
		</channel>
</rss>

