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 Vim 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, ou Vim.
A possibilidade de executar 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 também se destaca.

Alternativas ao Vim

há várias outras alternativas disponíveis por aí.
E é 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 Vim

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


vim -R /usr/bin/startx
  • Note que usei a opção ‘-R’ (read only mode), para evitar fazer alterações acidentais no arquivo.
    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

Se você está usando a versão mais simplificada do vi, saiba que ela 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, instale a versão mais avançada, Vim (vi improved):


sudo apt install vim

O exemplo, acima, é voltado para uso no Debian ou no Ubuntu (e nas distribuições derivadas deles).

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!