Vim et snipMate (plug-in) - l'ajout de nouveaux extrait ne fonctionnera pas
Question
Je suis en train de créer un nouvel extrait de code à mon plug-in snipMate.
Je travaille avec certains fichiers appelés (à savoir) myfile.endfile
Tous les fichiers .endfile doit avoir le même « extrait », comme les fichiers .html. Donc, je l'ai fait
cp html.snippet endfile.snippet
dans mon ~ / .vim / répertoire des extraits.
SnipMate travaille avec tous les extraits présents, mais pas avec mon nouveau créé. Toutes les suggestions pour ce problème?
(BTW:. Après la création du nouveau fichier .snippet, j'ai couru commande :helptags ~/.vim/doc
dans une instance de vim)
La solution
Il est parce que Snipmate travaille avec filetype
, qui est une option Vim ensemble lors de l'ouverture d'un fichier d'un type particulier.
Pour exemple, si vous ouvrez, "index.html" le filetype
est automatiquement réglé sur html
.
Pour voir comment cela fonctionne, faites:
:e $VIMRUNTIME/filetype.vim
En tant que test préliminaire, vous pouvez:
1. test.endfile ouvert
2. Type :set ft=endfile
ou :set filetype=endfile
3. Vérifiez si vos extraits définis Tricoter
Pour ce faire ajouter automatiquement les éléments suivants dans votre .vimrc:
au BufNewFile,BufRead *.endfile set filetype=endfile
Cela signifie que chaque fois que vous lisez ou créez un nouveau fichier se terminant en endfile
the option filetype est réglé sur ENDFILE.
(Le type de fichier est une chaîne arbitraire, il ne doit pas être identique à l'extension de fichier)
Autres conseils
Vous pouvez attribuer des extraits sans modifier le type de fichier (ce qui est souhaitable, parce que la modification de la mise en évidence des ruptures filetype).
Je crois que la bonne façon de le faire dans la fourche maintenu de snipmate est de définir g :. snipMate.scope_aliases
Dans votre exemple, en supposant que vous avez un fichier « endfile.snippet », je crois que ce qui suit à votre .vimrc fonctionnerait:
let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'endfile'
Si vous voulez que les deux extraits HTML et ENDFILE au travail pour les fichiers de filetype = 'html', utilisez:
let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'html,endfile'
J'ai ajouté un demande traction snipmate d'avoir leur documentation mise à jour . Modifier Il a été fusionné.
Je l'ai trouvé pratique d'utiliser des extraits global lors de l'utilisation des extraits qui ont name.endfile rare.
Lorsque vous mettez vos extraits _. Snippets fichier dans le dossier des extraits, ils se mondialisent et sont accessibles dans tous les filetype.
Peut-être que cela répond pas directement à la question, mais beaucoup d'utilisateurs avec le même problème peut trouver cette pratique. Surtout si elles n'ont pas besoin d'avoir tout organisé dans divers dossiers et sont heureux d'avoir leurs propres extraits dans un fichier qui est accessible partout.