Como mover o cursor dentro do editor Vim

Fora do modo de inserção (i), dentro do modo de comando (Esc), é possível movimentar o cursor através das teclas direcionais do seu teclado ou usando teclas de comando para isto.
As teclas direcionais são as setinhas

 ↓   →   ←   ↑

Há também as teclas de comando:

  • h ← move o cursor um caractere para a esquerda
  • j ↓ move o cursor uma linha para baixo
  • k ↑ move o cursor uma linha para cima
  • l → move o cursor um caractere para a direita

As teclas de movimentação do cursor vão muito além disto no Vim.
Além de poder “andar” um caractere de cada vez, também há comandos para:

  1. se mover entre blocos de texto, como palavras, sentenças ou parágrafos
  2. se mover entre telas de um mesmo arquivo

Por que usar as teclas de comando em vez das direcionais do teclado?

Não se esqueça: tudo no Vi ou no Vim, é pensado para a máxima produtividade de quem digita.
Claro que “o que é produtivo e satisfatório para um, pode não ser para outro”.
Cabe a você decidir se vale a pena incorporar uma maneira nova de fazer as coisas ou não.
Aprender a usar este método de movimentação dentro do texto, vai tomar alguns minutos ou talvez mais.
Ao se permitir o aprendizado, você pode perceber que ele poupa tempo, no modo de comando.
A principal vantagem é que este caminho possibilita posicionar o cursor aonde você quiser no texto, sem precisar retirar a mão do centro do teclado.

Use valores numéricos para ter mais controle sobre a movimentação

Você pode indicar por quantos caracteres ou linhas o cursor irá se mover, dentro do seu texto.
Veja estes exemplos:

  1. 4l — o comando faz o cursor ‘andar’ 4 espaços para a direita
  2. 5j — o comando faz o cursor se mover 5 linhas para cima

Desta maneira, o Vim oferece meios de multiplicar os efeitos de um comando antes de sua execução.

Mais comandos para mover o cursor no Vim

Para se movimentar por entre blocos de texto, use os seguintes comandos de teclado:

  • 0 — (zero) para ir para o início de uma sentença ou parágrafo. Equivale a Home.
  • $ — para ir para o final de um parágrafo. Equivale a End.
  • w — (word) se move uma palavra de cada vez para frente.
  • b — (backwards?) se move uma palavra de cada vez para trás.
  • – — sobe uma linha.
  • + — desce uma linha.

Obviamente, as teclas + e – fogem daquele objetivo de realizar uma movimentação mais natural no teclado.

Uma linha, no Vim, não é a mesma coisa que a sua representação visível, na tela, com 80 colunas.
Uma linha é um bloco de texto compreendido entre uma quebra de linha e outra.
Em outras palavras, começa com um Enter e termina no próximo Enter.

Em todas estas teclas é possível acrescentar argumentos numéricos para multiplicar os efeitos de cada comando. Por exemplo:

  1. 4b — para mover 4 palavras para trás
  2. 5- — para subir 5 linhas

Você pode usar o comando G para ir até o fim do arquivo.
Com argumentos numéricos, é possível dizer ao comando G exatamente em que linha o cursor deve ficar.
Desta forma, 1G leva o cursor para o início do arquivo e 42G leva até a linha 42.

erro na linha 15
Quando você está tentando executar um script ou compilar código, frequentemente pode se deparar com avisos de erros.
Os avisos podem indicar exatamente em que linha do seu programa há alguma inconsistência.

Leia mais sobre o editor Vim.

O editor QTM foi feito para blogar offline

Poder blogar, escrever seus textos, longe de qualquer conexão à Internet pode dar uma sensação de liberdade imensa.
Ter esta liberdade, permite produzir seu conteúdo nas condições mais adversas ou, pelo contrário, com mais conforto.

qtm editor main screen

Estar desligado da Internet pode ajudar a compôr um ambiente mais criativo e mais produtivo.

O QTM é um editor de textos que permite, ao toque de um botão, conectar e enviar o seu texto para o site em que seu blog está hospedado.
Além disto, como qualquer editor offline, ajuda a organizar localmente toda a sua produção.
Neste artigo, vou apresentar o QTM, disponível nos repositórios de várias distribuições GNU/Linux.

O aplicativo tem suporte a 7 plataformas de CMS e permite cadastrar várias contas.
Se você escreve para blogs diferentes, pode concentrar o seu trabalho em uma única ferramenta.

Meus exemplos, foram executados em uma máquina rodando o Debian 9.
Quem usa distribuições derivadas desta não vai ter problemas para encontrar o aplicativo nos repositórios oficiais.
O editor tem o modo de edição em texto puro (meu preferido) e o modo de edição WYSIWYG (what you see is what you get) — e suporte a Markdown.
Veja como instalar:


sudo apt install qtm

Como configurar o QTM

qtm blogging welcome
O QTM vai pedir algumas configurações iniciais, logo após a instalação.
Esta parte é baseada em 2 estágios.
No primeiro, você pode selecionar como deseja que o editor se comporte, para tornar mais fácil o seu trabalho.
No segundo, são pedidas as informações de conexão, necessárias para “subir” o conteúdo para o seu site.

Vou me ater às configurações principais, necessárias para ter o mínimo de funcionalidade.
As tela iniciais, eu deixei exatamente como estavam.

O mais importante é informar o aplicativo sobre a sua plataforma de CMS (Content Management System ou sistema de gestão de conteúdo) e como se conectar a ela.
O restante dos ajustes, podem ser feitos on the go, ou seja, à medida em que se vai usando o programa.
qtm configuration window
Não importa para quantos blogs você costuma enviar conteúdo. A ferramenta aceita incluir quantas contas você precisar.

  1. Clique em “New account” e informe o “Name” da nova conta de blog.
    Use um nome que seja fácil para você se lembrar.
  2. Na linha “Hosted blog type”, informe uma das plataformas à qual o QTM tem suporte:
    • WordPress.com.
    • WordPress hospedado no seu próprio site.
    • TypePad
    • SquareSpace
    • Movable Type
    • Drupal
    • TextPattern
  3. Em seguida informe A URI completa do seu blog. Este dado será usado para preencher automaticamente o campo “Endpoint”.
  4. Informe o nome de usuário (login name) e a sua senha (password).
  5. Por fim, há uma lista de itens clicáveis para escolher.
    Eu optei por selecionar todos.

Conclusão sobre o QTM

É claro que usei o QTM para escrever este post.
Foi maravilhoso poder escrever no meu canto favorito da casa, aonde a Internet nunca “pega” direito.
Com mais de 1000 posts escritos com o uso da ferramenta de edição nativa do WordPress, nem tudo foi fácil.
Não conheço, com profundidade, outras plataformas de blogging, portanto o WP é a minha única referência para comparações.
Senti falta de 2 coisas:

  1. Uma ferramenta de correção ortográfica — os editores nativos dos blogs que conheço não possuem este tipo de ferramenta, mas a gente sempre usa a do navegador.
    Não chega a ser um problema. Embora eu possa publicar diretamente do QTM, prefiro enviar meus textos como rascunho e, mais tarde, fazer a revisão dentro do editor do WordPress.
  2. Melhor suporte para incluir as imagens no blog — não encontrei possibilidade de incluir as imagens, armazenadas localmente, no texto.

Nada é perfeito e estes inconvenientes podem ser superados com algumas mudanças nos métodos de trabalho, sem perda na produtividade.

As teclas de comando do editor vim

Quando não estiver escrevendo texto ou editando código no Vi ou no Vim, o modo de comando pode ser ativado, com o pressionamento da tecla ESC.
Neste modo, é que realizamos operações de arquivo ou de texto.

Tenho por hábito, quando paro para pensar sobre o que estou a escrever, sair do modo de edição e gravar o meu trabalho.
Esta prática é recomendada por vários autores.

Se quiser se aprofundar no assunto, sugiro ler mais no site ou dar uma olhada no excelente tutorial do Guru99 (in english).
O Vi tem basicamente 2 modos de operação:

  1. Modo de comando — é o modo padrão. Quando entramos no vim, ele já se encontra no modo de comando.
    Além disso, sempre que quiser voltar a este modo, pressione a tecla ‘ESC’.
    O command mode é voltado para realizar tarefas, como:

    • mover e posicionar o cursor dentro do texto.
    • copiar, cortar e colar blocos de texto.
    • gravar seu arquivo atual, gravar com um novo nome, abrir um novo, sair do editor, alterar o tema da sintaxe etc.

    Os comandos dados são sensíveis à caixa. Ou seja, ‘:wq’ é diferente de ‘:WQ’. Fique atento a isto.

  2. Modo de inserção — voltado para escrever e inserir texto.
    Você pode entrar nele, com o pressionamento da tecla ‘i’ (de insert ou inserir).
    Também é possível iniciar o modo de inserção com as teclas:

    • a — começa a inserção após (after) ou depois da posição do cursor.
    • A — começa a inserção ao final da linha atual.

Apesar de gostar da grande quantidade de recursos das IDEs — sou fã da Komodo IDE e da Netbeans — nada substitui a velocidade de um editor como o vi.
Para pequenos blocos de código ou pequenos projetos, é sempre a minha escolha.

Agora, tecle ‘ESC’ e acompanhe a tabela de comandos do Vim, que segue, abaixo:

Teclas Ação
u Desfaz (undo) a última ação.
U Desfaz as últimas ações na linha atual.
o Inicia (open ou abre) uma nova linha e entra no modo de inserção automaticamente.
dd A sequência apaga a linha atual (que se encontra sob o cursor).
3dd Apaga 3 linhas de uma vez.
D Apaga o conteúdo da linha, após o cursor.
C Apaga o conteúdo da linha, após o cursor e inicia o modo de inserção de conteúdo.
dw Apaga uma palavra à direita.
4dw Apaga 4 palavras à direita.
cw Permite alterar a palavra sob o cursor.
x Apaga o caractere sob o cursor.
r Substitui um caractere.
R Inicia o modo de sobrescrita a partir da posição atual do cursor.
s Substitui o caractere na posição do cursor e continua a edição em modo de inserção.
S Começa a inserção na linha atual, substituindo o seu conteúdo.
~ (til) Altera a caixa do caractere sob o cursor.

Como movimentar o cursor dentro do vim

Além das teclas direcionais do teclado, que você já conhece ← ↓ ↑ →, é possível usar também, nas mesmas funções as teclas k,j,h e l:
No modo de comando (ainda):

Teclas Ação
h Movimenta o cursor para a esquerda.
j Movimenta o cursor para baixo.
k Movimenta o cursor para cima.
l Movimenta o cursor para a direita.

Como gravar e fechar o arquivo

Por fim, veja como gravar as alterações feitas no arquivo e fechá-lo.

Teclas Ação
shift + zz Grava o arquivo e fecha o vim.
:w Apenas grava o arquivo e o mantém aberto.
:q Fecha, sem gravar nada.
:q! Fecha (à força), sem gravar nada.
:wq Grava o arquivo e fecha o vim.

Referências

Mais posts sobre o Vim editor: https://elias.praciano.com/?s=vim+editor.
Site do Guru99: https://www.guru99.com/the-vi-editor.html

Por que eu uso o Vim para programar.

Já experimentei várias IDEs de programação e ainda uso algumas, entre editores de textos variados.

Se alguém me perguntar qual editor uso para escrever código, a resposta é “Muitos!”.

Mas um deles sempre me cativou mais e é a quem sempre recorro quando vou dar continuidade a algum trabalho, dar alguns retoques em algum pedaço de código e editar arquivos de configuração do sistema.

O nome dele é Vim (ou Vi) e, embora não seja a única (como já disse), é a minha principal opção de editor de código.

Recentemente topei com o post do Casper Beyer, em que ele explica por que também prefere usar o Vim para programar.

Me senti tipo… “Poxa! Não sou o único maluco do pedaço”. 😉 Faço minhas as palavras do Casper:

A principal razão para usar o Vim é o costume — e não por que não sei sair dele.

A filosofia por trás da construção do Vim, não é apenas a leveza. Tanto isto é verdade, que as estatísticas vão mostrar que o Nano, muitas vezes, bate o Vim, neste quesito.

A ideia do Vim é oferecer uma experiência de agilidade para desenvolvedores — oferecendo uma gama de comandos que podem ser dados sem a necessidade de afastar as mãos do centro do teclado.

gvim text editor screen capture

Desde que comecei a usar o Linux, me acostumei a abrir pequenos arquivos de código ou de configurações do sistema dentro dele, em vez de ficar a esperar “séculos” que o editor GUI (interface gráfica) aparecesse na tela.

Na CLI, ele é leve, pequeno e está bem longe de ser um programa ruim. Pelo contrário, podemos usar extensões e plugins para aumentar as suas funcionalidades.

gvim text editor screen capture

Saber usar bem este programa, vai também ajudar quando você tiver que se conectar a algum servidor remoto via SSH — onde é possível que o vi (irmão mais velho do Vim) e o Nano sejam as únicas opções de editores disponíveis.

Quem usa computadores com restrição de recursos, vai entender bem melhor alguns dos argumentos, aqui.

A possibilidade de aumentar as funcionalidades, através de extensões e a velocidade com que o editor trabalha são as razões mais importantes, pra mim.

O visual é uma questão de gosto pessoal. E eu gosto do “visu” espartano dele.

vim text editor screen capture
O Gvim é uma versão GUI do editor.

Em seu artigo, Beyer propõe um teste. Carregar um arquivo com o seguinte código (em linguagem C), em vários editores, para comparar desempenhos:

#include 

int main() {
  printf("Hello, world!\n");
}

Eu obtive os seguintes números, relativos ao tempo total de carregamento e finalização do aplicativo, em segundos:

  1. Nano: 0,45s
  2. Vim: 0,47s
  3. Komodo Editor: 8,257s

Como você pode observar, o Nano consegue ser ainda mais rápido do que o Vim.

E a diferença entre o tempo de abertura destes dois para o do Komodo Editor, é brutal.

Consumo de memória do Vim

E o consumo de memória?

O código, acima, ocupa 66 bytes no disco do meu sistema. Veja os valores atingidos com o uso de cada editor:


ps aux | grep "hello.c"

justinc+ 16719 11.7  3.0 958240 242980 pts/1   Sl   16:32   0:09 /opt/Komodo-Edit-11/bin/komodo hello.c
justinc+ 16720  0.1  0.0  33140  7112 pts/1    T    16:32   0:00 vim hello.c
justinc+ 16721  0.0  0.0  15060  2640 pts/1    T    16:32   0:00 nano hello.c

O resultado exibe o consumo de memória na 4a coluna, da esquerda para a direita.

Assim, temos um consumo de 3.0 MB para o komodo, enquanto o Nano e o Vim nem “mexem os ponteiros”.

O ps não é perfeito para medir o consumo de memória de aplicativos mas o objetivo, aqui, é só estabelecer uma comparação.

Veja os resultados obtidos com o pmap:


pmap -x 16866 16969 16970 | grep total

total kB          973988  237952  155584
total kB           41932    7792    2892
total kB           23952    3736     960

Pela ordem, acima, temos os números (em KB), na segunda coluna, referentes ao Komodo, ao Vim e ao Nano.

Este último é o preferido de muita gente, em termos de editores em CLI, além de estar presente em quase todas as distribuições GNU/Linux.

Estes números só reforçam o quanto é ridículo usar um editor com um consumo de memória tão massivo.

Conclusão

Além do Komodo, como editor para GUI do Linux, uso também o Atom e o Netbeans (IDE).
Acho-os incríveis e vou continuar a tê-los instalados no meu sistema, para quando eu lembrar de usá-los.

O preferido, contudo, continua a ser o Vim.
A lógica pela qual o programa foi construído é fantástica: dar o máximo de produtividade para o desenvolvedor. Todas as funções que se precisa, devem estar ao alcance dos dedos.

Ele dispensa você da necessidade de tirar a mão de cima do teclado, para pegar no mouse — embora tenha completo suporte ao dispositivo tanto na edição para GUI quanto para a CLI.

Você pode levar algum tempo para conhecer e memorizar os comandos e as teclas de atalho do Vim — da mesma forma como vai levar algum tempo para dominar qualquer outro editor.
A diferença é que, com o Vim, você será premiado com mais eficiência e produtividade no final.

Comente sobre o que você acha deste editor.
Prefere mais agilidade e velocidade para editar ou prefere a comodidade de uma grande IDE?

Leia outros artigos sobre o Vim.

Como incluir esquemas de cores no Vim

O Vim (ou Vi) é um dos editores mais completos e complexos que há.
Apesar de ser muito (muito, mesmo) leve, inclui possibilidades de adicionar recursos através de extensões ou pequenos ajustes.
Não esqueça de dar uma olhada na nossa thread sobre o Vim — tem muita coisa interessante lá.


Neste artigo, vou mostrar como baixar e incluir novos esquemas (temas) de cores para usar no Vim.
Vou começar explicando aonde os temas devem ser guardados (para o Vim conseguir achar) e como carregá-los.
Em seguida, vou passar alguns sites que conheço que têm temas legais para você baixar e, se quiser, alterar para ficar do seu gosto.

Aonde os esquemas do Vim são guardados

No Linux, as configurações e outros arquivos de ajustes são guardados dentro de uma pasta (escondida) no seu home ou ~/.
O nome da pasta (diretório) é .vim.
Os esquemas de cores são guardados em .vim/colors/
Para chegar lá, use o cd:


cd ~/.vim/colors

No meu caso (Debian 10), o diretório colors precisou ser criado e, portanto, não havia nada lá dentro ainda.

Onde baixar novos esquemas de cores para o Vim

Editor de textos vim
Esquema de cores Ekvoli.

Peguei minha relação de links nos sites do Vim Ninjas e outros. Veja as referências, ao final do artigo.

  1. GRB256 by Gary Bernhardt — https://github.com/garybernhardt/dotfiles/blob/master/.vim/colors/grb256.vim.
  2. Guardian by Miikka-Markus Leskinen — https://vim.sourceforge.io/scripts/script.php?script_id=1240.
  3. Distinguished by Kim Silkebækken — https://github.com/Lokaltog/vim-distinguished/tree/develop/colors.
  4. Github Vim by Anthony Carapetis — https://vim.sourceforge.io/scripts/script.php?script_id=2855.
  5. Jellybeans by nanotech — https://github.com/nanotech/jellybeans.vim/tree/master/colors.
  6. Railscasts by Ryan Bates — https://github.com/ryanb/dotfiles/tree/master/vim/colors.
  7. Twilight by Henning Hasemann — https://vim.sourceforge.io/scripts/script.php?script_id=1677.
  8. Vividchalk Tim Pope — https://github.com/tpope/vim-vividchalk/tree/master/colors.
  9. Candy by Takeshi Zeniya — https://vim.sourceforge.io/scripts/script.php?script_id=282.
  10. Solarized by Ethan Schoonover — https://github.com/altercation/vim-colors-solarized/tree/master/colors.
  11. Gruvbox by morhetz — https://github.com/morhetz/gruvbox/tree/master/colors.
  12. Ekvoli by Preben Randhol — https://vim.sourceforge.io/scripts/script.php?script_id=1681.
  13. Mango by goatslacker — https://vim.sourceforge.io/scripts/script.php?script_id=1681.
  14. Herald & Moria (já citado, acima) — https://h3rald.com/articles/herald-vim-color-scheme/.
  15. Badwolf & Goodwolf by sjl — https://github.com/sjl/badwolf/tree/master/colors.
  16. Molokai by tomasr — https://github.com/tomasr/molokai/tree/master/colors.
  17. Tomorrow by troeggla (em 5 variações) — https://github.com/chriskempson/tomorrow-theme/tree/master/vim/colors.

Baixe quantos quiser e grave-os dentro de .vim/colors/, como mencionado acima.
Vim Color schemes

Como aplicar um esquema de cores ao Vim

Logo após abrir o editor, no modo de comando, digite o comando :colorscheme seguido do nome do esquema desejado.
Segue um exemplo, com o esquema ‘autumnleaf.vim’

:colorscheme autumnleaf

Use a tecla Tab, para agilizar a digitação.


Encontrou algum erro ou tem algum tema para sugerir? Deixe-nos saber, nos comentários.

Referências

Dicas sobre o editor Vim: https://www.guru99.com/the-vi-editor.html.

Confira a coletânea do Chris Kempson: https://github.com/chriskempson/base16-vim/tree/master/colors.

Artigo sobre o assunto no Quora: https://www.quora.com/What-are-some-of-the-best-Vim-color-schemes.

Artigo do Veselin Todorov, no Vim Ninjas: www.vimninjas.com/2012/08/26/10-vim-color-schemes-you-need-to-own/.