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.
203 lines
10 KiB
203 lines
10 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">01.05. Mudando de Modos – Modo de Comando</h1> |
|
<span class="post-date"> |
|
2015-12-22 |
|
|
|
</span> |
|
<p>Essa é a parte onde você vai aprender a fazer as coisas que precisavam de um |
|
menu para serem feitas.</p> |
|
<span id="continue-reading"></span> |
|
<p>Existem três "iniciadores" de comandos no modo de... erm... comando:</p> |
|
<ul> |
|
<li><code>:</code>: Inicia um comando de edição.</li> |
|
<li><code>/</code>: Comando de pesquisa.</li> |
|
<li><code>!</code>: Comando de filtro externo.</li> |
|
</ul> |
|
<h2 id="comandos-de-edicao">Comandos de Edição</h2> |
|
<p>Assim como os comandos do modo normal, a quantidade de comandos de edição é |
|
grande demais para cobrir de uma vez só. Então vamos dar uma olhada nos mais |
|
utilizados:</p> |
|
<h2 id="q">:q</h2> |
|
<p>Sai do VIM. Esse deve ser o comando mais infame da história do editor -- pelo |
|
menos, para os não iniciados. E ele ainda aparece na tela inicial do VIM, se |
|
você prestar atenção.</p> |
|
<h2 id="w">:w</h2> |
|
<p>Salva o arquivo atual em disco. Você pode passar o nome do arquivo a ser salvo |
|
neste ponto. <code>:w</code>, por exemplo, irá salvar o conteúdo com o nome atual; <code>:w outro-nome</code> irá salvar o conteúdo no arquivo "outro-nome".</p> |
|
<h2 id="wall">:wall</h2> |
|
<p>Salva todos os arquivos arquivos. Mais adiante veremos como ter vários arquivos |
|
abertos ao mesmo tempo.</p> |
|
<h2 id="wq">:wq</h2> |
|
<p>Salva o arquivo atual e o fecha.</p> |
|
<h2 id="help">:help</h2> |
|
<p>Abre o help do VIM no tópico indicado. Por exemplo, <code>:help :w</code> irá apresentar as |
|
opções existentes para o comando <code>:w</code>; <code>:help c</code> irá mostrar as opções do comando <code>c</code> |
|
do modo normal e assim por diante.</p> |
|
<h2 id="set">:set</h2> |
|
<p>Configura (ou apresenta) alguma configuração do VIM. Mais a frente veremos como |
|
configurar o VIM e veremos as opções este comando.</p> |
|
<h2 id="r">:r</h2> |
|
<p>(Ou :read) Não é muito comum, mas permite carregar o conteúdo de outro arquivo |
|
para dentro do arquivo atual. sem precisar fazer todo o processo de |
|
copiar-e-colar (que veremos mais adiante). Um fato interessante de <code>:r</code> é que se |
|
o nome do arquivo a ser carregado começar com "!", o VIM irá tentar executar o |
|
comando ao invés de carregar o conteúdo. Por exemplo, <code>:r date</code> irá carregar o |
|
conteúdo do arquivo <code>date</code> para dentro do arquivo atual enquanto que <code>:r !date</code> irá |
|
executar o comando <code>date</code> e "colar" o resultado para dentro do arquivo atual.</p> |
|
<h2 id="noh">:noh</h2> |
|
<p>(Ou :nohighlight) Desliga a marcação sobre elementos de pesquisa. A seguir nós |
|
vamos ver sobre o comando de pesquisa; ao fazer uma, o VIM irá colocar um |
|
"realce" (ou "highlight") sobre as palavras encontradas. Para desligar esses |
|
realces no texto, você pode usar <code>:noh</code>. </p> |
|
<p>Aqui eu preciso abrir três parenteses:</p> |
|
<ul> |
|
<li> |
|
<p>Quando o vim se recusar a executar um comando, você pode forçá-lo a executar |
|
o mesmo de qualquer forma adicionando uma exclamação <code>!</code> no final do comando. |
|
Por exemplo, se o VIM se recusar a sair porque você tem alterações em um |
|
arquivo não salvo, <code>:q!</code> irá forçar o editor fechar, perdendo as alterações |
|
feitas; se o arquivo não tiver permissão de escrita, <code>:w!</code> irá fazer com que o |
|
VIM altere as permissão do arquivo para poder escrever (e, no final, esta |
|
alteração das permissões é revertida)<sup class="footnote-reference"><a href="#1">1</a></sup>.</p> |
|
</li> |
|
<li> |
|
<p>Uma coisa que você vai encontrar frequentemente são referências a "buffer" e |
|
"arquivo". Entenda assim: buffer é a representação do arquivo na memória |
|
enquanto que o arquivo é a representação do conteúdo no disco. Ao abrir um |
|
arquivo, o VIM cria um buffer com o conteúdo do arquivo e o mantém em |
|
memória; se o arquivo sumir, o buffer ainda existirá e poderá ser salvo |
|
ainda; vários comandos internos do VIM -- se você se aventurar a escrever um |
|
plugin, por exemplo -- fazem referência ao buffer e não ao arquivo, mas |
|
existem funções que retornam o buffer de um arquivo com o nome indicado. Em |
|
todo esse tempo usando VIM, a distinção entre ambos nunca me pareceu |
|
importante e considerar, simplesmente, que "buffer" é o arquivo em memória é |
|
o suficiente.</p> |
|
</li> |
|
<li> |
|
<p>Todos os comandos internos do VIM iniciam com uma letra minuscula e plugins, |
|
quando adicionam comandos a mais, adicionam com letras maiúsculas<sup class="footnote-reference"><a href="#2">2</a></sup>. Ainda, |
|
boa parte dos comandos não precisa ser digitada completa; quando não há mais |
|
redundâncias, o comando é aceito. Por exemplo, se houverem os comandos |
|
":Gblame" e ":Gbork", ":Gb" não será aceito, mas ":Gba” será porque não há |
|
mais nenhum outro comando que comece com ":Gba" (por isso que ":noh" funciona |
|
como atalho para ":nohighlight": porque não há nenhum outro comando que |
|
inicie com "noh").</p> |
|
</li> |
|
</ul> |
|
<h2 id="comando-de-pesquisa">Comando de Pesquisa</h2> |
|
<p>O comando de pesquisa é, simplesmente, <code>/</code>. Uma vez pressionado, você verá o |
|
cursor indo para a última linha da tela esperando a pesquisa. Uma coisa a ter |
|
em mente é que o VIM utiliza expressões regulares -- então algumas coisas que |
|
você procurar não irão funcionar exatamente como você está esperando. ".", por |
|
exemplo. Eu não vou entrar em detalhes sobre expressões regulares porque há |
|
pilhas de informações sobre elas na internet -- e há praticamente mais sobre |
|
elas do que essa série tem (e terá) sobre VIM.</p> |
|
<p>Dois comandos do modo normal que eu não mencionei antes por estarem ligados ao |
|
comando de pesquisa são <code>n</code> e <code>N</code>. <code>n</code> irá mover o cursor para a próxima |
|
ocorrência da pesquisa, enquanto que <code>N</code> move o cursor para a anterior. Note |
|
que eu falei "move o cursor"; isso quer dizer que <code>n</code> e <code>N</code> são comandos de |
|
movimentação e, portanto, podem ser usados com outros comandos do modo normal |
|
que utilizam movimentação. Por exemplo, procurar por "olá" e, em modo normal, |
|
executar <code>cn</code> irá remover tudo da posição do cursor até a próxima ocorrência de |
|
"olá" (e entrará em modo de edição).</p> |
|
<h2 id="comando-de-filtro">Comando de Filtro</h2> |
|
<p>O comando de filtro pega o conteúdo no editor e passa para outro programa. Por |
|
exemplo, se você tiver o aplicativo "rot13", ao executar <code>!rot13</code>, todo o |
|
conteúdo do arquivo será convertido para ROT13. Se você digitar <code>!!rot13</code>, no |
|
entanto, o conteúdo ainda será passado para o filtro e o resultado irá |
|
substituir o conteúdo do buffer atual.</p> |
|
<p>Não parece ser interessante, mas um dos aplicativos que normalmente vem com o |
|
VIM é "xxd", que converte o conteúdo para sua representação hexadecimal. Ao |
|
executar "!xxd", você verá todo o conteúdo do seu arquivo com os valores |
|
hexadecimais de cada caracter.</p> |
|
<p><sup class="footnote-reference"><a href="#1">1</a></sup> Não confunda "Não ter permissão de escrita" com "O arquivo pertence ao |
|
root". No primeiro caso, o usuário tem permissão de ler o arquivo e trocar |
|
as permissões enquanto que no segundo o editor teria que ter permissões |
|
especiais de execução para poder trocar as permissões. O VIM só consegue |
|
responder ao <code>:w!</code> se ele próprio -- e, no caso, o próprio usuário -- tiver |
|
permissões suficientes sem requisitar outro aplicativo.</p> |
|
<p><sup class="footnote-reference"><a href="#2">2</a></sup> Na verdade, o VIM vem sim com comandos que inicial com letra maíuscula: São |
|
os comandos de exploração de diretório <code>:Explore</code>, <code>:Rexplore</code>, <code>:Vexplore</code> e o |
|
famigerado <code>:Sexplore</code>, que o pessoal costuma encurtar para <code>:Sex</code>.</p> |
|
<div> |
|
|
|
<div style="float:left"> |
|
<< <a href="./01-04-modo-visual">Modo Visual</a> |
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div style="float:right"> |
|
<a href="./01-05-modo-de-comando">Modo de Comando</a> >> |
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
</body> |
|
|
|
</html>
|
|
|