Vim/Complementando códigos com snippets

Origem: Wikilivros, livros abertos por um mundo aberto.
< Vim
Ir para: navegação, pesquisa

Introdução[editar | editar código-fonte]

Trata-se de um recurso de complementação mais elaborado, um misto de complementação de código simples e templates (modelos) um vídeo de exemplo pode ser visto aqui: http://www.eustaquiorangel.com/posts/438

Como funciona[editar | editar código-fonte]

Tomando como base a linguagem python, como poderia ser qualquer outra

 for <{item}> in <{seq}>:
        <{}>

O usuário digita a palavra reservada "for" (será o gatilho que dispara este snippet), pressiona em seguida a tecla <tab> O esqueleto do código é gerado e o cursor é posicionado em <{item}> O usuário digita o "item" e pressiona a tecla <tab> novamente e o cursor É posicionado então em <{seq}>. Finalmente o usuário pressiona <tab> e o cursor

É posicionado na posição final da função <{}> em modo insert.

 "dois exemplos de como criar snippets
 Iabbr <buffer> for for ${}; in ${};<CR>${};<CR>end
 Snippet for for <{item}> in <{seq}>:<cr><{value}>

O script snippetsEmu[editar | editar código-fonte]

Como instalar[editar | editar código-fonte]

Baixe estes dois scripts:

O primeiro script é um utilitário (script) para instalar outros scripts que vem no formato vba. Os scripts vba por sua vez quando carregados na memória instalam as coisas certas nos lugares certos. Então vamos lá.

Instalando o script vimball install details

1. Remova qualquer vestígio da antiga versão do vimball, Normalmente

 cd /usr/share/vim/vim71
 rm plugin/vimball*.vim
 rm autoload/vimball*.vim

2 . Descompacte o script vimball.tar.gz

tar zxvf vimball.tar.gz ; cd vimball
chmod a+r autoload/vimball.vim doc/pi_vimball.txt plugin/vimballPlugin.vim
copie as pastas para o seu diretorio ~/.vim

Instalando o plugin snippetsEmu

1. Digite este comando

mkdir -p ~/.vim/after/ftplugin

Isso é necessário pois o script não cria esta pasta por alguma razão

2. Agora abra o arquivo snippy_plugin.vba com vim ou o gvim e rode este comando:

:so %

Você pode baixar vários snippets prontos aqui: http://www.mediafire.com/?2wgc1acdf2n basta descompactar na pasta

 "No linux
 ~/.vim/after/ftplugin/ 
 "No windows
 vimfiles/after/ftplugin

Você também pode encontrar um VimTarball para instalá-los automaticamente (como o snippetsEmu) no endereco: http://www.vim.org/scripts/script.php?script_id=1318

Configure o seu vimrc[editar | editar código-fonte]

filetype on
filetype plugin on
"atalho control-espaço para ativa snippets
let g:snippetsEmu_key = "<C-Space>"

Observação: Caso obtenha este erro: "Mapeamento já existe para ^I" altere o atalho

let g:snippetsEmu_key = "<C-Space>"

Placeholders[editar | editar código-fonte]

Do inglês "marcadores de posição" permitem algo parecido com os snippets, consiste em criar pontos de marcação para os quais podemos pular acionando determinados atalhos

 for <++> in range(<++>):
         <++>

basta criar um mapeamento para pular para cada ocorrência de

<++>

Um exemplo seria

" A syntax for placeholders
" Pressing Control-j jumps to the next match.
inoremap <c-j> <ESC>/<++><CR><ESC>cf>

No caso acima estaría-mos usando Control 'j'

<c-j>

Confira se o seu vimrc não tem este atalho ou escolha o que melhor lhe convier

O plugin SnipMate[editar | editar código-fonte]

Atualmente o melhor plugin para inserir pedaços de código dinâmicos é o SnipMate, há muitas referências na web sobre o mesmo. Outro plugin bastante interessante é o AutoComplPop que exibe um popup das sugestões de complemento. Uma previsão do plugin SnipMate em ação pode ser vista no site Vimeo.