Na primeira parte desta série, discorri sobre o porquê de ter trocado o VS Code pelo Neovim, mas não cheguei a fundo nas funcionalidades e nas diferenças. Neste artigo vou me aprofundar nesses aspectos.
Como o Vim edita os textos
Em outros editores, basta clicar e começar a escrever. Salva-se o arquivo comum clique em "Salvar" no menu ou utilizando o atalho de teclado correspondente para a ação.
No Vim, é completamente diferente: o programa começa em um modo de edição rápida, que não habilita a inserção de textos. Este modo aceita a navegação e comandos para alterar o texto. Para modificar e navegar, usam-se comandos, que pode ser simples como uma tecla de atalho, ou compostos, onde se usam mais teclas para atingir determinado objetivo.
Para quem nunca usou, isso soa muito difícil e assustador, mas não é. Treinando, você acostuma e vê a praticidade.
Modo normal
Este é o modo padrão do editor. Para acessá-lo usa-se sempre a tecla ESC
.
Navegação pelo texto
A navegação funciona como na maioria dos editores, direcionais para mover o cursor na tela, PageUp
ou PageDown
para mover-se entre "páginas", Home
ou End
para ir para o começo ou final da linha. Fora esses atalhos, existem outros que são feitos apenas apertando teclas normais como letras e símbolos. Eis alguns deles:
Comandos simples:
G
: posiciona o cursor no final do arquivo.L
: posiciona o cursor no final da tela. O L vem de Low, embaixo em inglês.M
: posiciona o cursor no meio da tela. O M vem de Middle, meio em inglês.H
: posiciona o cursor no começo da tela. Note que isto não é necessariamente o começo do arquivo. H vem de High, alto em inglês.0
: move o cursor para o início da linha.w
: move o cursor para o início da próxima palavra. O w vem de word, palavra em inglês.b
: move o cursor para o início da palavra anterior. O b vem de back, voltar em inglês.e
: move o cursor para o final da próxima palavra. O e vem end, final em inglês.J
: junta linhas.%
: mostra o escopo correspondente, dentro de parênteses, colchetes ou chaves..
: repete qualquer operação feita anteriormente.
Comandos compostos:
gg
: posiciona o cursor no começo do arquivo.- Número +
G
: vai para uma linha específica. Ex.:23G
vai para a linha 23 do documento. f
+ caractere: move o cursor para a próxima ocorrência do caractere escolhido. Ex:f(
move o cursor para o próximo abre parênteses.- Número +
w
,b
oue
: move o cursor para o início/final da enésima palavra após a posição atual. Ex.:2w
move o cursor para o início da segunda palavra
Edição do texto
Edições simples podem ser feitas neste modo.
Comandos simples:
x
oudelete
: apaga o caractere sob o cursor.u
: desfaz as últimas alterações.r
: substitui o caractere sob o cursor pelo próximo que será digitado.
Comandos compostos: remoção de conteúdo
Para apagar conteúdo, pressiona-se a tecla d
; funciona de maneira parecida ao comando cortar presente em todos os editores. A forma a qual ele será apagado/recortado vai depender da próxima letra digitada:
d
: "deleta" a linha inteira.dd
equivale aoCTRL + X
no VS Code.- Número +
d
: remove várias linhas.2134dd
apagará 2134 linhas do arquivo. w
: apaga até o final da palavra.- Número +
w
: apaga determinado número de palavras. Ex.:d2w
apaga duas palavras. i
+ caractere: remove o conteúdo delimitado por um caractere. Ex.:di{
remove um conteúdo entre chaves. Um jeito fácil de entender é memorizar a frase em inglês "delete inside {}", "apagar dentro das chaves".i
+w
: apaga a palavra inteira.i
+t
: remove tudo que estive dentro de uma marcação HTML.t
+ caractere: remove o conteúdo até determinado caractere. Ex.:dt.
remove um conteúdo até o próximo ponto final. Lembre-se da expressão "delete till .", "apagar até o ponto final".$
: apaga de onde está o cursor até o final da linha. O atalhoShift + d
, tem o mesmo efeito.
Comandos compostos: cópia de conteúdo
A cópia funciona basicamente da mesma forma que a remoção. O comando usado para a cópia é y
, que vem da palavra yank, "puxar" em inglês. As mesmas combinações de teclas funcionam, mas aplicadas à cópia:
y
: copia a linha inteira.yy
equivale aoCTRL + C
no VS Code.- Número +
y
: copia várias linhas. Ex.:1873yy
copiará 1873 linhas.
E assim por diante, conforme o exemplo anterior.
Colando conteúdo
Para colar o conteúdo, usa-se o comando p
, de paste, "colar" em inglês. Vale ressaltar que todo conteúdo deletado fica na área de transferência. Usando o p
, a cola será feita após o cursor e usando P
a mesma será feita antes do cursor.
Modo de inserção
Ao entrar nele tudo é bastante familiar, pois é como todo editor geralmente abre por padrão. Existem diversas formas para acessar o modo para inserir texto:
i
: abre o modo de inserção e posiciona o cursor antes do caractere atual.a
: abre o modo de inserção e posiciona o cursor após caractere atual.s
: abre o modo de inserção e apaga o caractere sob o cursor.I
: posiciona o cursor no começo da linha para inserir conteúdo.A
: posiciona o cursor no final da linha para adicionar conteúdo.o
: insere uma linha abaixo do cursor e entra no modo de inserção.O
: insere uma linha acima do cursor e entra no modo de inserção.
Comandos compostos: mudar conteúdo
Outro modo de entrar no modo de inserção é usar o comando c
, de change ("mudar" em inglês). Este segue o mesmo padrão dos comandos de remoção e cópia descritos anteriormente. Ele recorta o conteúdo e abre o modo para inserção, muito prático. Como exemplo, imagine que tenhamos a seguinte marcação em HTML:
<p class="texto-aleatorio-em-latim">
Lorem ipsum dolor sit amet, consectetur <strong>adipiscing elit</strong>.
Quisque eget lobortis velit. Maecenas nec molestie eros, eu efficitur erat.
Nunc nec congue justo, et commodo dolor. Aliquam <em>facilisis</em> urna eget
massa pulvinar, in bibendum ante convallis.
</p>
Basta posicionar o cursor na marcação e digitar cit
. A marcação fica assim:
<p class="texto-aleatorio-em-latim">|</p>
O "|" acima representa onde ficará o cursor, pronto para inserir o novo texto.
Modo de substituição
Este modo é basicamente o mesmo que apertar a tecla Insert
: o texto digitado sobrescreve o anterior. Ele é acessado pelo atalho R
.
Modo visual
O modo visual habilita a seleção de texto. É ativado com a tecla v
. Para selecionar o texto, basta usar os direcionais. Clicar com o botão direito do mouse também ativa o modo, caso esteja configurado.
Os comandos feitos após o modo visual só afetarão a área selecionada.
Modo de comando
Este modo é um dos mais usados porque ele é o equivalente a uma barra de ferramentas. É através dele que salvamos o arquivo. Ele é ativado pelo atalho :
e a partir daí basta escrever o comando desejado e apertar Enter
. Abaixo sequem alguns exemplos.
w
ouwrite
: salva o arquivo atual.q
ouquit
: fecha o arquivo. Adicione o!
para forçar a saída caso ele reclame de alterações não salvar.x
ouwq
: salva e fecha o arquivo.h
ouhelp
: entra na ajuda do programa.s
: entra no modo localizar substituir a partir da linha atual. Ex.:s/herrado/certo
substituirá a palavra "herrado" pela "certo".s/herrado/certo/g
fará a mesma coisa, em todas as ocorrências na linha.s/herrado/certo/g 8
efetua a troca das palavras em todas as ocorrências das próximas 8 linhas.
Curiosidades
Direcionais
Apesar de poder usar o direcional normalmente, o Vim incentiva o uso das teclas h
,j
, k
, l
para mover o cursor para a esquerda, baixo, cima e direita, respectivamente. Isso se deve ao fato de o computador usado na época pelo desenvolvedor do Vim usava um teclado em que os direcionais ficavam nessa teclas.
Teclado do Computador ADM 3a
Os mais aficionados abominam o uso dos direcionais. De fato, quando você se acostuma, você pode ser bastante produtivo, pois as teclas estão mais próximas. Pessoalmente eu não uso isto
Tecla ESC
No mesmo teclado acima, o Esc
ficava quase na mesma posição da tecla Caps Lock
. Ao saber disto, nota-se que escolha não foi tão estranha assim, pois a posição do Caps Lock é muito mais cômoda do que a do Esc
atual. É possível configurar o editor para essa troca. Eu mesmo não a fiz.
Encerro este artigo por aqui! Não dá para ensinar tudo do programa, infelizmente: não sei tudo dele e um artigo de blog não é suficiente para este fim. Apesar disto, acredito que este é o básico para você iniciar neste editor tão "assustador".
Sugiro que como lição de casa, use o "Vim Tutor": é um comando disponível no terminal assim que o Vim é instalado no sistema. Ao escrever vimtutor
no terminal, abre-se uma instância do Vim sem quaisquer extensões carregadas, com um texto bem didático que ensina mais a fundo cada comando que citei aqui, com exercícios práticos.
No próximo artigo, vou ensinar a como deixar o Vim mais útil e bonito. Porque convenhamos, ele é extremamente feio de início.
Até a próxima!