2011-01-11 15 views
13

Cuando estoy en un archivo html.erb, no recibo snipMate snippets.Vim html.erb snippets ?? snipMate Necesito una sugerencia de vim

Me gustaría tanto HTML como Ruby, o simplemente HTML estaría bien, ¿Cómo haría esto?

¿Tendría que escribir un conjunto de fragmentos?

Si es así, ¿hay alguna manera de extraer los fragmentos existentes sin copiarlos?

¿Hay alguna manera de decirle a vim que entre al modo html cuando vea .html erb?

Respuesta

12

Los fragmentos se almacenan en el directorio llamado snippets en algún lugar de su carpeta ~/.vim.

Si miras allí, generalmente hay un archivo por tipo de archivo, hay un c.snippets, un ruby.snippets, así que parece que lo que tienes que hacer es crear un erb.snippets allí con lo que quieras.

Eventualmente puede copiar el contenido de ruby.snippets y html.snippets en sus nuevos erb.snippets.

También puede buscar en github, algunas personas han publicado su propia configuración de erb.snippets. Por ejemplo, hay una buena colección ahí: https://github.com/scrooloose/snipmate-snippets

lo mejor sería probar primero para abrir un archivo de fragmento y mirar a la sintaxis, es bastante fácil de crear su propio fragmento en función de lo que más usa .

+0

Gracias increíbles ... ¡erb-rails carece de etiquetas html así que solo copiaré em! Gracias. –

+0

¿cómo hiciste que funcione? Agregué erb.snippets a la carpeta de fragmentos y agregué algunos fragmentos pero aún dice "Patrón no encontrado" mientras que snipmate funciona perfectamente con .c .rb y otros archivos nativos. – Sergey

+0

Parece que necesita ser refactorado a través de https://github.com/scrooloose/snipmate-snippets/blob/master/ruby-rails/defcreate.snippet. Preferiría usar reply_with, así que estoy trabajando en algunos nuevos fragmentos. – kgpdeveloper

17

Puede usar un autocmd para establecer el tipo de archivo en html al abrir un archivo ".html.erb". Esto podría tener efectos secundarios no deseados para los complementos que funcionan para los archivos ".erb".

autocmd BufNewFile,BufRead *.html.erb set filetype=html 

También puede cargar más de un conjunto de fragmentos mediante el uso de un tipo de archivo de puntos:

autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby 

Ver :help snippet-syntax en la ayuda snipMate para obtener más información.

+0

tener cuidado con esto. La gran sintaxis se dañó: https://dl.dropbox.com/u/750013/SS_2012-11-01_21%3A27%3A41.png. – robertokl

3

que utiliza el método AutoCommand al conjunto el tipo de archivo, pero entonces tiene errores de sintaxis HTML para cosas como esta:

<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %> 

Los últimos dos escuadras sería destacado en rojo, lo que me volvían loco. Entonces, creé un enlace simbólico llamado eruby.snippets que apunta a html.snippets. Eso funcionó como un campeón y ahora no tengo que hacer cambios en dos lugares. También tengo un directorio de fragmentos de eruby-rails para fragmentos eruby que no sean html.

Esto es en un sistema Mac OS X. Tenga en cuenta que un alias no funcionará. Necesitas golpear la terminal y usar el comando ln. No estoy seguro de hacer esto en un sistema Windoze.

8

Actualmente estoy en una gira de promoción para UltiSnips en StackOverflow. UltiSnips apoya la extensión de otros tipos de archivos, sus erb.snippets se vería así: guión

extends html, ruby, rails 

snippet temp "A snippet only in Erb" 
erb rules ${1} 
endsnippet 

Una conversión de fragmentos snipMate se envía con UltiSnips, por lo que es fácil de conmutación.

+0

Entonces, ¿por qué no incluir esa línea extends en los ultisnips para eruby? –

+1

No sé nada sobre ruby, eruby, erb o cualquier otro html o material de codificación relacionado con la web. Por lo tanto, debo confiar en que los usuarios proporcionen definiciones útiles de fragmentos de código y archivos .snippet aquí. Siéntase libre de enviar un parche. – SirVer

2

Puede asignar múltiples ámbitos de fragmentos a un único tipo de archivo. (He encontrado que alterar el tipo de archivo tiende a romper algunos resaltados de sintaxis).

Se puede comprobar que el tipo de archivo para los archivos de erb es de hecho 'eruby' con:

:set filetype? 

Si está utilizando el maintained fork of snipmate, parece que usted querrá tanto los eruby.snippets y eruby- rails.snippets del repositorio snipmate-snippets (propiedad de honza, pero no tengo suficiente reputación para vincularlo aquí) (consulte la sección INSTALACIÓN del archivo snipmate README para ver la configuración correcta).

Si está utilizando el tenedor mantenido, creo que el establecimiento de g: snipMate.scope_aliases en su .vimrc con la siguiente trabajará para su ejemplo:

let g:snipMate = {} 
let g:snipMate.scope_aliases = {} 
let g:snipMate.scope_aliases['eruby'] = 'eruby,eruby-rails' 

He añadido un pull request a tener snipmate su documentación actualizada.

1

Saltando en el carro UltiSnips después de probar SnipMate por un tiempo. Como mencionó SirVer, tener los fragmentos de html, ruby, etc. disponibles en un archivo *.erb fue tan simple como agregar la línea extendida al archivo eruby.snippets.

0

con el original snipMate plugin, crear un archivo de ~/.vim/ftplugin/erb_snippets.vim y poner el siguiente en él:

silent call ExtractSnipsFile(g:snippets_dir . 'html.snippets', &l:filetype) 
silent call ExtractSnipsFile(g:snippets_dir . 'ruby.snippets', &l:filetype)