Estou usando ultisnips há várias semanas.
Eu acho que as principais vantagens deste plugin são as seguintes:
- É bem rápido, mesmo com um grande número de trechos disponíveis.
- A sintaxe básica para definir um novo trecho é fácil de entender; portanto, é fácil criar rapidamente um novo trecho fazendo o que você deseja fazer. (Para trechos mais complexos, pode ser necessário um trabalho adicional.)
- Funciona muito bem fora da caixa; uma configuração básica permite que você use trechos muito rapidamente.
- É realmente configurável. Mesmo que a configuração básica funcione bem, se você for um usuário avançado, poderá ajustá-la com bastante precisão.
Antes de tudo, o ultisnips é um mecanismo de snippet, o que significa que o plug-in fornece recursos para usar snippets, mas não fornece os snippets. Para obter os trechos, o autor recomenda
vim-snippets .
Depois de instalar os dois plug-ins, você poderá usar seus snippets.
Os trechos de definições são armazenadas em arquivos chamados seguinte padrões:
ft.snippets
, ft_*.snippets
ou ft/*
, onde ft
é o 'filetype' do documento atual e *
é um shell-like correspondência curinga qualquer cadeia, incluindo a cadeia vazia. (Observe que a sintaxe do tipo de arquivo pontilhado cuda.cpp
é suportada.)
Dessa maneira, fragmentos específicos para um tipo de arquivo são expandidos apenas quando o tipo de arquivo do buffer é definido. Um tipo de arquivo especial all
está disponível para criar trechos expandidos em todos os buffers.
Além dos snippets fornecidos pelos vim-snippets, o usuário pode definir seus próprios snippets. Minha recomendação seria colocá-los no diretório
~/.vim/my-snippets/Ultisnips
desta maneira, o Ultisnips os encontrará sem configuração adicional e é fácil mantê-los em um repositório dotfile.
Para expandir os trechos, o Ultisnips fornece uma variável g:UltiSnipsExpandTrigger
que define o mapeamento que acionará a expansão (eu escolhi o
**que é bastante conveniente para mim). Observe que uma integração deve ser possível, mas eu não a testei sozinha).
Para usuários avançados, o Ultisnips também fornece algumas funções para personalizar o comportamento da expansão ou para acioná-lo de maneira diferente. Vejo:h
UltiSnips-trigger-functions
Este é o primeiro gerenciador de trechos que eu realmente usei extensivamente e acho que esse é um bom começo, por sua simplicidade imediata e por sua possibilidade de ser ajustado.
Finalmente, aqui está uma lista de screencasts que fornecem uma boa introdução ao plugin: