Vim/Complementando códigos com snippets
Introdução
editarTrata-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
editarTomando 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
editarComo instalar
editarBaixe estes dois scripts:
- Vimbal http://vim.sourceforge.net/scripts/script.php?script_id=1502
- SnippetsEmu http://www.vim.org/scripts/script.php?script_id=1318
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
editarfiletype 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
editarDo 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
editarAtualmente 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.