Sto usando ultisnips da diverse settimane.
Penso che i principali vantaggi di questo plugin siano i seguenti:
- È abbastanza veloce anche con un gran numero di frammenti disponibili.
- La sintassi di base per definire un nuovo frammento è facile da capire, quindi è facile creare rapidamente un nuovo frammento facendo quello che vuoi fare. (Per frammenti più complessi può essere necessario un lavoro aggiuntivo.)
- Funziona molto bene fuori dagli schemi; una configurazione di base consente di utilizzare gli snippet molto rapidamente.
- È davvero configurabile. Anche se la configurazione di base funziona bene, se sei un utente esperto puoi davvero ottimizzarlo abbastanza finemente.
Innanzitutto ultisnips è un motore di snippet, il che significa che il plug-in fornisce funzionalità per utilizzare gli snippet ma non fornisce essi stessi gli snippet. Per ottenere i frammenti, l'autore consiglia
vim-snippet .
Una volta installati entrambi i plugin, sarai in grado di utilizzare i tuoi frammenti.
I frammenti definizioni sono memorizzate in file denominati seguenti schemi:
ft.snippets
, ft_*.snippets
o ft/*
, se ft
è il 'filetype' del documento corrente ed *
è una conchiglia wildcard qualsiasi stringa compresa la stringa vuota. (Si noti che la sintassi del tipo di file punteggiato cuda.cpp
è supportata.)
In questo modo gli snippet specifici di un tipo di file vengono espansi solo quando è impostato il tipo di file del buffer. È disponibile un tipo di file speciale all
per creare frammenti espansi su tutti i buffer.
Oltre agli snippet forniti da vim-snippet, l'utente può definire i propri snippet. La mia raccomandazione è di metterli nella directory in
~/.vim/my-snippets/Ultisnips
questo modo Ultisnips li troverà senza ulteriore configurazione ed è facile mantenerli in un repository dotfile.
Per espandere gli snippet, Ultisnips fornisce una variabile g:UltiSnipsExpandTrigger
che definisce la mappatura che attiverà l'espansione (ho scelto
**quale è abbastanza conveniente per me). Si noti che un'integrazione dovrebbe essere possibile ma non l'ho testata da solo).
Per gli utenti esperti, Ultisnips offre anche alcune funzioni per personalizzare il comportamento dell'espansione o per attivarlo in modo diverso. Vedere:h
UltiSnips-trigger-functions
Questo è il primo gestore di frammenti che ho usato molto ampiamente e penso che questo sia un buon inizio per la sua semplicità fuori dagli schemi e la sua possibilità di essere sintonizzato.
Infine ecco un elenco di screencast che offrono una buona introduzione al plugin: