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/.

Como sair do editor vim

Sair do editor Vim, embora seja fácil, parece ser uma tarefa ingrata para muitos usuários novatos.
Tenho alguns textos sobre como usar e configurar o vim e, recentemente, me surpreendi com a quantidade de pessoas que perguntam justamente como se faz para finalizar o editor.
A resposta curta é a que segue.
Comece por teclar ‘Esc’, para sair do modo de inserção do editor. Em seguida:

  • tecle :wq e ‘Enter’, para gravar (write) e sair (quit) ou
  • tecle :q! e ‘Enter’, para sair arbitrariamente do editor — ele sequer vai pedir confirmação.

Como sair do editor vim

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.


Seja como for, não entre em desespero.
O método, no vídeo abaixo, é totalmente inadequado para terminar o vim… ou qualquer outro programa.

Editor vi avançado

Neste texto, vamos abordar alguns comandos, recursos e técnicas para usar o editor de textos vi, de maneira mais avançada.
No texto Editor vi básico, mostramos uma série de comandos para iniciantes — incluindo 2 papéis de parede com a relação de comandos básicos do vi, para ajudar a memorizar.
vi text editor
Este post é voltado para usuários que desejam poupar tempo e escrever (código de programação ou outros textos) com mais eficiência — fazendo uso de recursos avançados, que o livram do trabalho repetitivo.

O vi é um editor de textos tradicional no UNIX/Linux. Foi muito popular, mas os termos da sua licença não eram 100% livres (até 2002).
Isto abriu caminho para vários editores compatíveis — como o nvi e o elvis. O Vim, é também um deles.
Em muitas distribuições Linux, ao digitar ‘vi’, o Vim é o que será executado.

Vamos ao que interessa! 😉

Como fazer busca de strings dentro do editor vi

Segue a lista de referência rápida, para encontrar strings dentro de um arquivo aberto no vi.
Funciona igual às páginas do manual do sistema (comando man) ou ao player de música cmus.

  • /   — faz a busca pela próxima ocorrência da string, no texto
  • ?   — faz a busca (pra trás) pela ocorrência anterior da string escolhida
  • /^   — faz a busca pela ocorrência da string em inícios de linha
  • /.   — faz a busca pela ocorrência de um único caractere
  • /*   — faz a busca por qualquer caractere presente após a string
  • /$   — faz a busca pela ocorrência da string em fins de linha
  • n   — move o cursor para a próxima ocorrência durante a busca
  • N   — move o cursor para a ocorrência anterior durante a busca

Como fazer busca e substituição de texto no vi

Para completar a lista, acima, veja como encontrar strings no texto e susbstituí-las:

  • :s/string-atual/string-nova   — encontra a string atual e substitui pela nova
  • :s/string-atual/string-nova/g   — encontra a string atual e substitui pela nova, em uma linha
  • :%s/string-atual/string-nova/g   — encontra a string atual e substitui pela nova, em um arquivo

Faça ajustes no vi, com o comando set

  • :set ic   — ignore case, ou seja, passa ignorar a caixa (se maiusculas ou minúsculas) dos caracteres, durante as buscas
  • :set number ou :set nu   — liga a exibição da numeração das linhas na tela
  • :set nonu   — desliga a exibição da numeração das linhas na tela
  • :set ai   — liga a autoindentação
  • :set noai   — desliga a autoindentação
  • :set list   — liga a exibição de caracteres invisíveis
  • :set nolist   — desliga a exibição de caracteres invisíveis
  • :set sw=n   — ajusta a largura do shift para o valor de n
  • :set wm=n   — ajusta a margem de palavra para o valor definido em n
  • :set ws   — ao encontrar o final do arquivo, recomeça a busca do começo
  • :set bf   — para descartar caracteres de controle do input
  • :set ro   — altera o modo de acesso do arquivo para “apenas leitura” (read only
  • :set showmatch   — liga exibição de pares de parênteses à medida em que forem digitados
  • :set noshowmatch   — desliga exibição de pares de parênteses à medida em que forem digitados
  • :set showmode   — exibe o modo do editor, na linha de status
  • :set noshowmode   — oculta o modo do editor.
  • :set term   — mostra o tipo de terminal
  • :set all   — mostra valores de todos os possíveis tamanhos

Mais comandos

  • J   — junta duas linhas
  • ~   — altera a caixa de um caractere
  • U   — restaura o estado de uma linha, desfazendo alterações
  • u   — defaz a última alteração
  • Ctrl + G   — exibe o nome do arquivo e status
  • :f   — exibe a posição atual do arquivo em %, nome do arquivo e o número total de arquivos
  • :f nome-do-arquivo   — renomeia o arquivo atual para nome-do-arquivo
  • :f nome-do-arquivo   — grava o conteúdo atual para nome-do-arquivo
  • :e nome-do-arquivo   — abre
  • :new nome-do-arquivo   — abre novo arquivo, com o nome dado
  • :n   — se tiver múltiplos arquivos abertos, este comando move para o próximo arquivo da fila
  • :p ou :N   — se tiver múltiplos arquivos abertos, um destes comandos para mover o foco para o anterior da fila
  • :r nome-do-arquivo   — lê e posiciona o conteúdo de nome-do-arquivo após a linha atual do cursor
  • :nr nome-do-arquivo   — lê e posiciona o conteúdo de nome-do-arquivo após a linha n
  • :cd nome-do-diretorio   — altera o diretório atual
  • G   — move o cursor para a última linha
  • nG ou :n   — move o cursor para a linha n

Referência

http://www.ctrlageeks.com/advanced-vi-editor/.

Introdução ao editor de textos vi

O vi é um editor de textos orientado à tela, ou screen-oriented, originalmente criado para uso no ambiente do sistema operacional UNIX.
vim logo
O nome “vi” é uma abreviação para “visual editor”
Atualmente, o Vim tem se tornado mais comum e presente em muitas distribuições Linux. Tudo o que falarmos, neste post, serve para ele também.

Editores visuais, também chamados de editores de tela cheia ou screen-oriented são programas que exibem o texto editado, na tela, à medida em que são alterados.
Todos os editores GUI se encaixam nesta categoria e, talvez, você não conheça nenhum outro tipo.
Entre os editores CLI, contudo, há a categoria baseada em linhas, ou line-oriented, que são muito pouco usados

Não esqueça de clicar nos links do texto, para se aprofundar mais em algum assunto e dar uma olhada na sessão de referências, ao final, para obter mais informações.

Modos de operação do vi

O vi pode se apresentar em 2 modos de operação:

  1. Modo de comando — em que se executam as tarefas administrativas: gravar arquivos, abrir novos arquivos, executar comandos relacionados aos arquivos, mover o cursor, cortar/copiar/colar texto, encontrar/substituir texto etc.
  2. modo de edição/texto — em que o usuário pode editar seu texto.

Como escrever um programa, usando o editor vi

Veja como abrir, escrever o código, gravar e sair do editor vi.
Neste exemplo, vou mostrar como escrever um pequeno programa em Python, mas você pode readequar cada passo do exemplo da maneira que lhe convier.
Comece por abrir um terminal.
A seguir abra o vi com um novo arquivo:

vi hello.py

O vi já abre no modo de comando — onde ainda não é possível inserir texto novo.
Para começar a inserir caracteres, tecle ‘i’.
Em seguida, pode digitar o código:

print "Ola, nerds!"

Para gravar, é preciso entrar no command mode. Para isto, tecle ‘Esc”.
Agora, tecle ‘:w’, para gravar seu teto
Para sair do editor, tecle ‘:q’, ainda dentro modo de comando.
Você pode também usar ‘:wq’, para gravar e sair.
Se cometer erros de digitação, durante a edição do arquivo, tecle ‘Esc’ para entrar no command mode.
Use as teclas direcionais, para se movimentar e ‘x’ para apagar caracteres sob o cursor.
Se quiser inserir caracteres, use o ‘i’.

Saiba mais

O vi não é complicado. Mas a gente precisa de um tempo para entender sua lógica e aprender seus comandos.
Com o tempo ele vai ficando mais fácil e editar arquivos de configuração, bem como escrever alguns scripts para a manutenção do sistema, vai se tornando cada vez mais natural.
Se quiser aprofundar o seu aprendizado no vi, não se esqueça de dar uma olhada nestes outros textos:

Referências

https://www.ccsf.edu/Pub/Fac/vi.html.
http://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxa400/bpxug135.htm.
https://en.wikipedia.org/wiki/Visual_editor.
http://www.learnpython.org/en/Hello,_World!.