Pregunta

Estoy intentando crear un nuevo fragmento de mi plug-in snipMate.

Yo trabajo con algunos archivos de llamada (es decir) myfile.endfile

Todos los archivos .endfile debe tener el mismo "fragmento" como archivos .html. Así que hice

cp html.snippet endfile.snippet

en mi directorio ~ / .vim / fragmentos.

SnipMate está trabajando con todos los fragmentos presentes, pero no con mi nuevo creado. ¿Alguna sugerencia para este problema?

(Por cierto:. Después de crear el nuevo archivo .snippet, me encontré comando :helptags ~/.vim/doc en una instancia vim)

¿Fue útil?

Solución

Es porque Snipmate trabaja con filetype, que es una opción de ajuste de Vim al abrir un archivo de un tipo particular.

Para exemple, si se está abriendo, "index.html" la filetype se ajusta automáticamente a html.

Para ver cómo funciona, hacer:
:e $VIMRUNTIME/filetype.vim

Como una prueba preliminar, se puede:
1. test.endfile abierta
2. Tipo de :set ft=endfile o :set filetype=endfile
3. Comprobar si sus fragmentos definidos ahora el trabajo

Para hacer que añadir automáticamente el siguiente en su .vimrc:
au BufNewFile,BufRead *.endfile set filetype=endfile

Esto significa que cada vez que lee o crea un nuevo archivo que termina en endfilethe opción de tipo de archivo se establece en ENDFILE.

(El tipo de archivo es una cadena arbitraria que no tiene que ser idéntica a la extensión de archivo)

Otros consejos

Puede asignar fragmentos sin alterar el tipo de archivo (que es deseable, debido a la alteración de las roturas de tipo de archivo resaltado de sintaxis).

Creo que la forma correcta de hacer esto en el tenedor mantenido de snipmate es establecer g :. snipMate.scope_aliases

En su ejemplo, suponiendo que tiene un archivo 'endfile.snippet', creo añadiendo lo siguiente a su .vimrc funcionaría:

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

Si usted quiere que ambos fragmentos de HTML y ENDFILE a trabajar para archivos de tipo de archivo = 'html', a continuación, utilizar:

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

¡Tengo una tirón solicitud a snipmate tener su documentación actualizada . Editar Ahora se ha fusionado.

He encontrado conveniente usar globales cuando se utilizan fragmentos de fragmentos que tienen name.endfile poco común.

Cuando se pone sus fragmentos en _. Fragmentos archivo dentro de la carpeta fragmentos se convierten en global y son accesibles en cada tipo de archivo.

Tal vez esto no respondió directamente a la pregunta, pero una gran cantidad de usuarios con problemas similares puede encontrar conveniente. Especialmente si no tienen necesidad de tener todo organizado en varios archivos y están felices de tener sus propios fragmentos en un archivo que es accesible en todas partes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top