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

Como forçar o realce de sintaxe no vim

O editor de texto vi ou vim costuma detectar automaticamente a sintaxe correta a ser realçada, em função da linguagem de programação usada.
Em inglês, este recurso é chamado de syntax highlighting.
O editor de textos, no caso, confia na extensão de cada arquivo, para determinar o syntax highlighting a ser usado.
Mas, se você estiver editando um arquivo com código em PHP, mas a extensão dele é diferente de ‘.php’, isto pode não permitir ao vim realçar adequadamente as palavras-chave, as strings, as variáveis etc.
Caso não esteja, o realce de sintaxe pode ser ativado, genericamente, com o comando:

:set syntax=on

Se você quiser um realce específico, então indique a linguagem:

:set syntax=python
:set syntax=perl

Para desligar, use ‘off’:

:set syntax=off

Onde encontrar as linguagens de programação suportadas

Você pode encontrar a relação de arquivos de configuração do realce de sintaxe, para as diversas linguagens de programação suportadas pelo vim (versão 7.x), no diretório /usr/share/vim/vim74/syntax/
Use o comando ‘ls’ para ver o conteúdo deste diretório.
diretorio de configuração do vim

Como resolver a sintaxe de 2 linguagens em um mesmo arquivo?

Programadores PHP, por exemplo, frequentemente precisam mixar HTML no meio do código.
Usualmente, o vim consegue resolver bem este tipo de situação.
Algumas vezes, contudo, ele “esquece” qual a linguagem do realce, em determinado ponto (PHP? HTML?) 😮
Neste caso, use o comando ‘Ctrl+L’ para refrescar a tela.
Se, ainda assim, o problema não se resolver, ajuste o parâmetro ‘php_minlines’ no arquivo de configuração .vimrc:

let php_minlines=500

O padrão costuma ser 100 linhas.

Referências

http://vim.wikia.com/wiki/Forcing_Syntax_Coloring_for_files_with_odd_extensions.

Tabulação no vim. Como indentar corretamente o seu código.

Este post é para aquelas pessoas que acreditam que a indentação é muito mais do que uma questão de mera estética.
Código bom, começa com uma boa indentação e comentários pertinentes.
Fora disso, é a barbárie! 😉
vim editor on kde
Há vários padrões de indentação, contudo. Alguns usuários preferem uma tabulação um pouco mais distante da margem, outros preferem um espaçamento menor entre uma tabulação e outra etc.
Neste post, vamos abordar como configurar o editor de textos vi, para organizar a tabulação do jeito que você acha melhor.
Veja alguns modelos populares de indentação:

  • Tabulações ou tabs com a largura de 8 colunas e cada nível de indentação corresponde a um tab — popular no kernel do Linux
  • Tabs com largura de 4 colunas e cada nível de indentação corresponde a um tab — comum entre desenvolvedores Windows (Visual Studio)
  • Cada nível de indentação tem 4 espaçamentos. A tabulação não é usada — comum entre programadores Java

Veja, a seguir, como ajustar cada item, direto na interface do programa e no arquivo de configurações.
Para teste, estamos usando o Ubuntu 16.04 LTS (também chamado Xenial Xerus)com a versão 7.4 do Vim.
Para saber qual a versão do aplicativo, use a opção ‘–version’:

vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 16 2016 10:50:38)

Conceitos de tabulação, indentação etc.

Vamos entender alguns conceitos e parâmetros, que podem ser usados para configurar a tabulação e a indentação dentro do texto.

  • tabstop —   determina quantas colunas são inseridas para cada vez que for pressionada a tecla Tab.
    É o único que afeta um texto já existente. Os outros, afetarão o texto que for escrito, daqui em diante.
  • expandtab —   quando ajustado, pressionar a tecla Tab, no modo de inserção, irá produzir o número apropriado de espaços.
  • shiftwidth —   controla quantas colunas e texto são indentadas com as operações de reindentações.
  • softtabstop —   controla quantas colunas o vim usa quando a tecla Tab é pressionada, no modo de inserção.
    Se o ‘softtabstop’ tem valor inferior ao ‘tabstop’ e o ‘expandtab’ não estiver ligado, o vim irá usar a combinação de tabulações e espaços para obter o espaçamento desejado.
    Se o ‘softabstop’ for igual ao ‘tabstop’ e o ‘expandtab’ não estiver ligado, o vim só usará tabulações.
    Quando o ‘expandtab’ estiver ligado, o vim irá usar sempre o número apropriado de espaços.

A melhor maneira de entender é experimentando. Vejamos alguns exemplos, fáceis de aplicar.
vim tab and indent

Indentação na vida real

Lembre-se, somente o ‘tabstop’, terá efeito imediato, dentro do texto que você for usar para aplicar os exemplos.
Os outros ajustes só terão efeitos perceptíveis, à medida em que você inserir texto novo.
O primeiro exemplo, reproduz o tipo mais usado por desenvolvedores do kernel Linux, de que já falamos acima.
Para obter tabulações com largura de 8 colunas e cada nível de indentação com uma só tabulação:

:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab

O próximo exemplo, é o do Visual Studio.
Para obter tabulações com largura de 4 colunas e cada nível de indentação com uma só tabulação:

:set tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab

Veja o exemplo de uso mais comum entre desenvolvedores Java — cada nível da indentação tem 4 espaços. Tabulações não são usadas:

:set softtabstop=4 shiftwidth=4 expandtab 

Segue mais 2 exemplos de ajuste da tabulação e indentação no vim.
No primeiro, ajustamos a tabulação para a largura de 8 colunas e cada nível de indentação em 3 colunas – que pode ser em espaços ou tabulações:

:set tabstop=8 softtabstop=3 shiftwidth=3 noexpandtab 

No segundo, o ajuste da tabulação fica em 5 colunas e o nível de indentação em 6 colunas — em espaços ou tabulações:

:set tabstop=5 softtabstop=6 shiftwidth=6 noexpandtab 

Me conte como você prefere configurar o seu editor vi ou vim.

O arquivo de configurações do vim

Depois de experimentar vários ajustes, você provavelmente irá escolher uma configuração para ser o padrão, para todos os novos arquivos.
Se você usa o Linux/UNIX, o arquivo de configurações é o ~/.vimrc. No Windows, ele fica em $HOME/_vimrc.
Se você usa a versão gráfica, gvim, pode acessar o painel de configurações, através do menu Editar.
Se o arquivo de configuração, não estiver presente no seu diretório home (no Linux), vocẽ pode copiar a versão “de fábrica”, /etc/vim/vimrc e alterá-la de acordo com as suas necessidades.
Uma outra alternativa é abrir o vim, já com estas opções ‘setadas’, dentro de um comentário. Veja um exemplo de comentário de primeira linha:

/* vim: set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab : */ 

É importante deixar esta linha comentada, ou o seu compilador irá pensar que este código tem a ver com ele — o que poderá causar problemas para você.
Happy coding! 😉

Referências

http://tedlogan.com/techblog3.html.

O básico do editor Vi

O editor de texto de linha de comando (CLI) Vi, está sempre presente, na maioria das distribuições Linux.
Clique na tag editores-de-texto, para ler mais sobre o tema.
Neste texto, pretendo abordar alguns comandos mais comuns e básicos, para quem deseja obter uma ajuda rápida no uso do edito Vi.
Para esclarecer, existe um editor, chamado Vim — que é derivado do Vi, com uma série de aprimoramentos.
Tudo o que você apender sobre Vi, se aplica ao Vim, portanto.
vi text editor on Linux Konsole

Como abrir arquivos com o editor Vi

O Vi só pode abrir arquivos de texto puro, ok?
Para iniciar o aplicativo, com um arquivo pronto para a edição, use o comando acompanhado do nome dele:

vi nome-do-arquivo

Arquivos de configuração, que você só deseja olhar e não alterar, podem ser abertos com a opção ‘-R’:

vi -R nome-do-arquivo

### opcionalmente, pode usar o view:

view nome-do-arquivo

Você pode abrir um arquivo novo, de dentro do aplicativo, com o seguinte comando:
:o nome-do-arquivo

Como usar o editor Vi

Use sempre a tecla Esc, para ir para a linha de comando do editor, onde vocẽ pode dar as instruções.
Sempre que quiser sair, tecle Esc, seguido do comando ‘:q’.
Para sair sem gravar as alterações feitas no arquivo, use o comando ‘:q!’.
Para sair gravando, use o comando “:wq” ou ‘:x’.
Em tempo, ‘wq’ é sigla para write e quit.
Para mover o cursor, dentro do texto, use as teclas ‘j’, ‘k’, ‘h’ e ‘l’ — ou as setas direcionais.
Há várias outras teclas ou combinações de teclas, que fazem atalhos para funções do editor.
Para ajudar a memorizar, sugiro imprimir o conteúdo desta página.
Disponibilizei 2 papéis de parede, com os comandos básicos do Vi, ao final deste post, que você pode usar no seu computador, por algum tempo. 😉
Segue as teclas para movimentação do cursor, no texto:

  • 0 ou | — move o cursor até o início da linha
  • $ — move o cursor até o fim da linha
  • w — posiciona o cursor no final da próxima palavra
  • b — posiciona o cursor no início da palavra anterior
  • :0 — movimenta o cursor para o início do arquivo (texto)
  • :n — movimenta o cursor para o início da linha n
  • :$ — movimenta o cursor para o final do arquivo (texto)
  • ( — posiciona o cursor no começo da sentença atual
  • ) — posiciona o cursor no fim da sentença atual
  • { — movimenta o cursor para o parágrafo anterior
  • } — movimenta o cursor para o próximo parágrafo
  • [[ — move o cursor para a seção anterior dentro do texto
  • ]] — move o cursor para a próxima seção dentro do texto
  • n| — move o cursor para a coluna n, na linha atual
  • 1G — posiciona o cursor na primeira linha do texto
  • G — posiciona o cursor na última linha do texto
  • fc — posiciona o cursor na próxima ocorrência do caractere c
  • Fc — posiciona o cursor na última ocorrência do caractere c
  • H — move o cursor para o topo da tela
  • M — move o cursor para o meio da tela
  • L — move o cursor para o fim da tela

O Vi também faz uso da tecla Ctrl — Veja:

  • Ctrl + d — avança meia tela
  • Ctrl + f — avança uma tela inteira
  • Ctrl + u — volta meia tela
  • Ctrl + b — volta uma tela inteira
  • Ctrl + e — rola a tela uma linha para cima
  • Ctrl + y — rola a tela uma linha para baixo
  • Ctrl + u — rola meia tela para cima
  • Ctrl + d — rola meia tela para baixo
  • Ctrl + I — refresca a tela do editor
  • Ctrl + r — refresca a tela do editor, apagando as linhas marcadas para remoção

Como inserir conteúdo no arquivo:

  • i — insere texto na posição atual do cursor
  • I — insere texto no início da linha atual
  • a — insere texto após a posição atual do cursor
  • A — insere texto a partir do fim da linha atual
  • o — inicia nova linha de inserção, abaixo da linha atual
  • O — inicia nova linha de inserção, acima da linha atual

Como apagar conteúdo no arquivo:

  • x — apaga o caractere na posição do cursor
  • X — apaga um caractere para trás
  • dw ou de — Apaga a palavra à direita do cursor
  • d^ — apaga tudo à esquerda, até o início da linha.
    Em teclados com acentuação (ABNT), é necessário teclar espaço após ‘^’
  • d$ — apaga tudo à direita do cursor, até o fim da linha
  • D ou DD — Apaga a linha toda, a partir da posição do cursor
  • dd — apaga a linha atual, onde o cursor se encontra

Como alterar o texto:

  • r — substitui o caractere sob o cursor
  • R — substitui os caracteres do texto, à medida em que digita
  • s — substitui o caractere, na posição do cursor, pelo próximo que você digitar
  • S — apaga a linha inteira, na posição do cursor, para receber novo texto
  • cc — remove o conteúdo da linha atual e inicia o modo de inserção de texto

Como copiar e colar:

  • Y ou yy — copia a linha atual
  • yw — copia a palavra à direita do cursor
  • p — cola a linha copiada na posição do cursor
  • P — cola o conteúdo copiado à direita do cursor

Papéis de parede com os comandos do Vi

As 2 imagens, abaixo tem tamanho padrão 1366 X 768 (não pesa muito e serve para a maioria das telas)
papel de parede com comandos do editor vi

wallpaper-cheatsheet-vi-ptbr

Referências

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

Como configurar o VI para fazer realce de sintaxe.

Aqui, o assunto vai ser um editor de textos simples presente em quase todas as distro Linux, justamente por ser extremamente leve (acho que este não é bem o caso do vim) e, além de tudo, é extremamente ‘espartano’ no seu visual.
Não se engane com “as roupas simples” do nosso amigo. Ele tem mais recursos que o leafpad, gEdit ou o Notepad (Windows).
Gosto de algumas coisas no vi. A possibilidade de executá-lo dentro de um terminal transparente e poder editar os meus arquivos de configuração e contemplar o meu papel de parede preferido enquanto trabalho, é uma delas. A leveza deste aplicativo completo salta aos olhos.
Gostaria de dizer ao leitor, da maneira mais polida possível, que, se você não sabe o que é o vi ou o vim, este texto provavelmente não é pra você. Desculpe. 😉

Alternativas ao editor vi

há várias outras alternativas disponíveis por aí. É sempre disso que estamos falando, quando o assunto é software livre: escolhas e liberdade de escolha.
Uma, que eu gosto muito é o nano e ele já tem o recurso syntax highlighting disponível como padrão e costuma vir ‘empacotado’ na maioria das distro.

Como ativar o syntax highlighting no vi

O caso, aqui, é simples para ser resolvido.
Inicie o vi, com o arquivo código do seu programa (eu vou usar o ‘startx’, no exemplo):

vi /usr/bin/startx

Dentro do editor, digite o seguinte comando:

:set syntax on

Isto deve resolver o problema.

Ops! Mensagem de erro E319…

Você ainda está aqui? Recebeu uma mensagem de erro?
vimrc-config2
A versão mais simplificada do vi não tem o recurso de realce da sintaxe do código. Isto gera a mensagem de erro: “E319: Sorry, this command is not available in this version”.
Para resolver isto, instale a versão mais avançada, vim (vi improved):

sudo apt-get install vim

, nas distro debian based, como é o caso do Ubuntu.

Editando o arquivo de configuração do vim

Uma solução definitiva e melhor é editar o arquivo de configuração do vim.
Abra-o com o seu editor favorito e edite a linha syntax off para syntax on. Se estiver apenas comentado, retire os “#”, tal como na figura:
vimrc-config
No Ubuntu, o arquivo de configuração do vim é /etc/vim/vimrc. Ao editá-lo, a solução torna-se definitiva.
Happy coding!