Blog do TaQ

Novidades na versão 7.3 do Vim

Publicado em Developer

Aproveitando que a turma está comentando bastante ultimamente do editor que alguns meses atrás era feio, tosco, tinha chulé e frieira mas agora é cool e sexy, o Vim, o qual eu uso faz trocentos anos até para desencravar unha (ahá! isso eu não conto como faz), decidi fazer esse post para numerar algumas das novidades que estão vindo por aí na versão 7.3 (ainda em beta), algumas bem interessantes.

Essa versão pode ser encontrada em pacotes unstable da sua distro preferida, no FTP do unstable do projeto (ftp://ftp.vim.org/pub/vim/unstable/) ou até mais recente usando o Mercurial:

hg clone https://vim.googlecode.com/hg/ vim 
cd vim 
hg update vim73 

Depois disso é o tradicional ./configure (que pode ter trocentas opções), make e make install. Para quem quer automatizar um pouco a coisa, eu tenho um script, o Viminstall, que encontra a versão mais recente no FTP, faz download, busca e aplica os patches e instala no diretório ~/apps/vim. Hoje aproveitei o embalo e atualizei com a opção de justamente buscar a versão unstable, bastando para isso executar o script com a opção -u.

Depois de instalado, vamos ás novidades.

Undo persistente

Ganhamos a opção de guardar nossos undos! Para isso, é só ativar com

:set undofile

Isso fará com que arquivos de undo sejam gravados no diretório corrente, e manterá o seu histórico de undo's mesmo que você feche o arquivo! Lógico que o diretório corrente pode ficar uma bagunça, ainda mais se for de algum projeto que estamos utilizando controle de versão, então para isso existe a opção de indicar onde os arquivos de undo serão gravados:

:set undodir=/tmp

Importante lembrar que algumas distros como o Ubuntu limpam o /tmp, para onde indiquei os arquivos na opção acima, toda vez que é reiniciada. Então cuidado onde você indica para gravar os arquivos, se pretende ter undo's perpétuos! Para a turma que gosta de fazer scripts, existe uma função que retorna o nome do arquivo de undo cujo nome é fornecido como argumento. Para ver o nome do arquivo de undo do buffer corrente, é só utilizar:

:echo undofile(expand("%"))

Existe também a função nova undotree que retorna informações sobre o estado corrente da estrutura de undo.

Criptografia mais forte

Ganhamos suporte para Blowfish! O método que existia até agora utiliza o método do PkZip, mas agora temos um porreta de seguro. Para habilitar, basta usar

:set cryptmethod=1

O valor 1 se refere à Blowfish, e 0 para o PkZip. Vale lembrar que depois de habilitar esse recurso devemos utilizar :X para especificar a senha do arquivo e :w para gravar já criptografado (ou :x para gravar e sair).

Números relativos de linhas

Essa opção é uma das minhas preferidas. Sabem quando queremos selecionar algumas linhas com algum comando de movimentação e contamos as danadas no "olhômetro"? Pois bem, depois de utilizar

set relativenumber

vamos ter algo parecido com isso, levando em conta que o meu cursor está na linha escrito "da":

4 isso
3 é
2 um
1 teste
0 da
1 nova
2 versão
3 do
4 vim

Olha que legal! Ele mostra os números das linhas relativas acima e abaixo da posição do cursor. Se eu quiser deslocar (ou fazer qualquer outro tipo de comando de movimentação com seleção etc) para a linha onde está a palavra "versão", por exemplo, posso ver claramente que vou utilizar um 2j, já que ele me mostra que está duas linhas abaixo.

Destaque de colunas

Podemos destacar determinadas colunas no texto, utilizando a opção

:set colorcolumn=<lista>

Para especificarmos as colunas que queremos destacar, podemos utilizar em <lista>, que é uma string separada por vírgulas, as seguintes opções:

:set colorcolumn=2,3,4

Isso vai destacar as colunas 2, 3 e 4 do texto. Ou

:set colorcolumn=+1,+2,+3

Isso vai destacar as colunas 1, 2 e 3 relativas ao textwidth definido, ou seja, as que "estouram" a margem do textwidth. Podem ser utilizados os sinais de + e i.

Importante: utilizar essa opção pode deixar a renderização mais lenta.

showcmd

Quando a opção :set showcmd está ativa (que é o default), em modo visual, na linha de status é apresentado:

Funções de ponto flutuante

Essas são para a turma que gosta de scripts. Foram adicionadas as funções acos(), asin(), atan2(), cosh(), exp(), fmod(), log(), sinh(), tan() e tanh().

Funções para abas

Podemos criar variáveis especificas para abas, da seguinte maneira, no exemplo, utilizando a aba corrente:

:call settabvar(tabpagenr(),"foo","bar")
:echo gettabvar(tabpagenr(),"foo")

Funções para strings

Foram adicionadas as funções strchars(), que conta o número de caracteres que tem na string, diferente de strlen(), que conta os bytes que a string ocupa. Por exemplo:

:echo strchars("ahá") => 3
:echo strlen("ahá") => 4
:echo strlen("aha") => 3

Alguns arquivos de sintaxe novos

Cucumber, Markdown, SVG, Perl 6

Alguns plugins novos de filetype

Cucumber, Markdown

Fora tudo isso, o suporte para a GTK 1 foi removido (ninguém usava né?), foi adicionado suporte para Python 3 e Lua e adicionadas mais algumas opções no :TOhtml (peçam um :help TOhtml para ver todas). O Vim cada dia melhor. :-)


Tags:


Comentários

comments powered by Disqus

Twitter