Domanda

Sto cercando di creare un nuovo frammento di plug-in al mio snipMate.

Io lavoro con alcuni file chiamato (cioè) myfile.endfile

Tutti i file .endfile dovrebbe avere lo stesso "frammento", come file .html. Così ho fatto

cp html.snippet endfile.snippet

nella mia directory ~ / .vim / frammenti.

SnipMate sta lavorando con tutti i presenti frammenti, ma non con il mio nuovo quello creato. Eventuali suggerimenti per questo problema?

(Btw:. Dopo aver creato il nuovo file .snippet, io comando :helptags ~/.vim/doc corse in un'istanza vim)

È stato utile?

Soluzione

E 'a causa Snipmate lavora con filetype, che è un'opzione insieme Vim quando si apre un file di un determinato tipo.

Per exemple, se si sta aprendo, "index.html" il filetype viene automaticamente impostato su html.

Per vedere come funziona, che fare:
:e $VIMRUNTIME/filetype.vim

In un test preliminare, è possibile:
1. Aprire test.endfile
2. tipo :set ft=endfile o :set filetype=endfile
3. Controllare se i vostri frammenti definiti ora di lavoro

Per fare che aggiungono automaticamente quanto segue nel Vimrc:
au BufNewFile,BufRead *.endfile set filetype=endfile

Ciò significa che ogni volta che si legge o si crea un nuovo file con estensione endfilethe opzione filetype è impostato su endfile.

(Il tipo di file è una stringa arbitraria non deve essere identica alla estensione)

Altri suggerimenti

È possibile assegnare frammenti senza alterare il tipo di file (che è desiderabile, perché alterando le pause filetype evidenziazione della sintassi).

Credo il modo corretto di fare questo nel forcella mantenuto di snipmate è impostato g :. snipMate.scope_aliases

Nel tuo esempio, supponendo che si dispone di un file 'endfile.snippet', credo aggiungendo quanto segue al vostro Vimrc avrebbe funzionato:

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'endfile'

Se si desidera HTML e endfile frammenti di lavorare per i file di filetype = 'html', quindi usare:

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'html,endfile'

Ho una trazione richiesta per snipmate di avere la loro documentazione aggiornata . Modifica Ora è stato fuso.

Ho trovato conveniente utilizzare globali snippet quando si utilizza frammenti che hanno name.endfile raro.

Quando metti i tuoi frammenti in _. Snippet file all'interno della cartella frammenti diventano globali e sono accessibili in ogni tipo di file.

Forse questo è non risponde direttamente alla domanda, ma un sacco di utenti con il problema simile si può trovare questo conveniente. Specialmente se non hanno bisogno di avere tutto organizzato in vari file e sono felice di avere i propri frammenti in un unico file che è accessibile ovunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top