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.
204 lines
10 KiB
204 lines
10 KiB
11 months ago
|
<!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>
|