2012-03-11 9 views
35

lo tanto, estoy usando plantillas underscore.js, en el que tengo que poner mi plantilla HTML dentro de una etiqueta de script, como este textoSublime Text 2 reconocen subrayan las plantillas como HTML

<script id="contactTemplate" type="text/template"> 
    <img src="{{ photo }}" alt="{{ name }}" /> 
    <h1>{{ name }}<span>{{ type }}</span></h1> 
    <div>{{ address }}</div> 
    <dl> 
     <dt>Tel:</dt><dd>{{ tel }}</dd> 
     <dt>Email:</dt><dd><a href="mailto:{{ email }}">{{ email }}</a></dd> 
    </dl> 
</script> 

pero sublime 2 es evaluando el código dentro como js regular, ¿cómo puedo cambiar eso?

¡Gracias de antemano!

+0

he presentado esto como un error con ST, de manera que todos los usuarios pueden disfrutar de esta solución en una versión futura: http://sublimetext.userecho.com/topic/453232-/ – Timm

Respuesta

69
  1. Vaya a "Browse Packages" en el menú (donde el elemento del menú depende de su plataforma).
  2. Abran HTML/HTML.tmLanguage
  3. cambiar esta línea (línea 286 en mi HTML.tmLanguage):

    <string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)</string>

    a esto:

    <string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)(?!.*type=["']text/template['"])</string>

Ahora las etiquetas de secuencia de comandos con type="text/template" o type='text/template' se representará como html y no como javascript.

+0

Gracias Matt! Estaba muriendo por usar zencoding y tag-matches en pesadas plantillas de subrayado. –

+4

Dios te bendiga, superhéroe RegExp. –

+1

Y si desea que esto también funcione para "text/html": ' (?:^\ S +)? (<) ((? I: script)) \ b (?! [^ >] */>) (?!. * Type = ["'] text/(template | html) ['"]) ' –

3

Para aquellos de nosotros usando Sublime Text 3

que pensé en consolidar la información en algo más fácil de encontrar, ya que ninguna de las respuestas o comentarios directamente me dio la solución que necesitaba. La respuesta de Matt York es mayormente correcta, pero la solución de Shane N es un poco más flexible:

<string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)(?!.*type=["']text/(temp‌​late|html)['"])</string>

puede encontrar HTML.sublime paqueteC:\Program Files\Sublime Text 3\Packages el interior, como se ha mencionado por Páez.

Instrucciones

  1. Extraer HTML.sublime paquete 's contenidos como cualquier archivo normal postal
  2. En el interior del nuevo directorio/HTML que acaba de crear, HTML.tmLanguage abrir y modificar la línea mencionado anteriormente (probablemente la línea 286)
    1. No debería ser justo después de <key>begin</key>
  3. Guarde los cambios, a continuación, añadir el directorio/HTML que HTML.tmLanguage vidas en un nuevo archivo zip
  4. eliminar el antiguo HTML.sublime paquete archivo
  5. Cambiar el tipo de archivo de .zip a .sublime-package (asegúrese de que Sublime no se está ejecutando mientras lo hace)
  6. Ahora debería estar listo para empezar: ¡encienda Sublime y vea sus increíbles plantillas resaltadas recientemente!
+1

Para hacer esto para OS X, primero tendrá que hacer clic derecho en la aplicación ST3 y seleccionar "Mostrar contenido del paquete", luego navegar a Contenido/MacOS/Paquetes/HTML.sublime-package –

9

Como la modificación de los paquetes incorporados no es exactamente fácil, segura o portátil (especialmente en ST3), dividí Matt York's en su propio paquete.

Está disponible a través de Package Control y es compatible con Sublime Text 2 y 3 en todas las plataformas.

HTML Underscore Syntax

+1

no funciona en sublime texto 3 –

+0

Acabo de instalarlo en una máquina nueva. Funciona perfectamente en Sublime 3. Es más fácil que editar el archivo. Gracias John! – Throttlehead

1

Para aquellos de nosotros mediante el uso Sublime Texto 3 el plugin "PackageResourceViewer" para editar HTML.sublime paquete

PackageResourceViewer

Cuestiones relacionadas