Cambiar idioma: English

Plantillas

Durante la redacción de muchos tipos de texto, es frecuente que se repitan algunos fragmentos. Las plantillas permiten ahorrar tiempo y esfuerzo en dicho caso.

Para crear una plantilla, selecciona Tools | New Snippet… y Sublime Text te presentará un modelo de plantilla.

Formato

Las plantillas suelen residir en módulos de Sublime Text. Consisten en archivos XML simplificados con la extensión .sublime-snippet. Por ejemplo, podría existir un archivo Saludo.sublime-snippet en un módulo llamado “Correo Electrónico”.

A continuación se puede ver la estructura típica de una plantilla con las anotaciones de Sublime Text incluidas:

<snippet>
    <content><![CDATA[Type your snippet here]]></content>
    <!-- Optional: Tab trigger to activate the snippet -->
    <tabTrigger>xyzzy</tabTrigger>
    <!-- Optional: Scope the tab trigger will be active in -->
    <scope>source.python</scope>
    <!-- Optional: Description to show in the menu -->
    <description>My Fancy Snippet</description>
</snippet>

El elemento snippet contiene toda la información que Sublime Text necesita para saber qué debe insertar y en qué circunstancias. A continuación examinaremos cada una de las partes individualmente:

content

Cotenido de la plantilla. Las plantillas pueden ser simples o complejas. Más adelante veremos ejemplos de los dos tipos.

Para escribir plantillas, se debe tener en cuenta lo siguiente:

  • Para escribir un $ literal, es necesario utilizar la secuencia de escape \$.
  • Utiliza siempre tabuladores en plantillas que requieran sangrado. Los tabuladores se convertirán automáticamente en espacios si la opción translate_tabs_to_spaces está activada.
  • Las plantillas se deben escribir dentro de la sección <![CDATA[…]]>. De lo contrario, no funcionarán.
tabTrigger

Especifica la secuencia de caracteres que se debe teclear para insertar la plantilla. La plantilla será insertada tan pronto como se pulse Tab tras dicha secuencia.

El elemento tabTrigger es una asignación de teclas implícita.

scope
Selector de contexto que determina las circunstancias en las que la plantilla será insertable. Consulta la sección Contextos para obtener más información.
description
Se utiliza en el menú Tools | Snippets. En su ausencia, Sublime Text empleará el nombre del archivo .sublime-snippet con el mismo fin.

Con la información presentada hasta el momento, ya puedes crear plantillas tal y como se describe en los apartados siguientes. Para abreviar, de aquí en adelante solo proporcionaremos el elemento content en los ejemplos a menos que se indique lo contrario.

Características de las plantillas

Variables de entorno

Las plantillas tienen acceso a información dinámica en forma de variables de entorno. Sublime Text establece automáticamente los valores de las variables mostradas en la siguiente tabla, pero se pueden añadir más mediante archivos .tmPreferences.

$PARAM1, $PARAM2… Argumentos pasados a la instrucción insert_snippet.
$SELECTION Texto seleccionado en el momento de insertar la plantilla.
$TM_CURRENT_LINE Contenido de la línea del cursor en el momento de insertar la plantilla.
$TM_CURRENT_WORD Palabra bajo el cursor en el momento de insertar la plantilla.
$TM_FILENAME Nombre del archivo activo con su extensión.
$TM_FILEPATH Ruta al archivo activo.
$TM_FULLNAME Nombre de usuario del usuario.
$TM_LINE_INDEX Columna donde se produce la inserción de la plantilla (se empieza en 0).
$TM_LINE_NUMBER Fila donde se produce la inserción de la plantilla (se empieza en 1).
$TM_SELECTED_TEXT Un alias de $SELECTION.
$TM_SOFT_TABS YES si translate_tabs_to_spaces es true, o NO en caso contrario.
$TM_TAB_SIZE Espacios por tabulador (valor especificado en la opción tab_size).

Veamos a continuación un ejemplo de una plantilla donde se utilizan variables:

====================================
Nombre de usuario:          $TM_FULLNAME
FILE NAME:          $TM_FILENAME
 TAB SIZE:          $TM_TAB_SIZE
SOFT TABS:          $TM_SOFT_TABS
====================================

# Output:
====================================
Nombre de usuario:          guillermo
FILE NAME:          test.txt
 TAB SIZE:          4
SOFT TABS:          YES
====================================

Campos

Los campos permiten adaptar el contenido de la plantilla tras su inserción. Se puede saltar secuencialmente entre campos presionando Tab sucesivamente para avanzar, o Ctrl+Tab para retroceder.

Nombre: $1
Apellidos: $2
Dirección: $3

En este ejemplo, el cursor saltará a $1 si presionas Tab una vez. Si se presiona Tab una segunda vez, se avanzará hasta $2, etcétera. Si presionas Tab tras el último campo, Sublime Text colocará el cursor al final del contenido de la plantilla para que puedas reanudar la escritura normal.

Si quieres determinar el punto de salida, utiliza el campo reservado $0.

Para interrumpir la navegación entre campos, presiona Esc en cualquier momento.

Campos idénticos

Los marcadores de campo idénticos se actualizan al mismo tiempo con el mismo contenido: cuando modifiques el primoer, los demás se rellenarán con el mismo texto inmediatamente.

Nombre: $1
Apellido: $2
Dirección: $3
Nombre de usuario: $1

En este caso, “Nombre de usuario” se rellenará con el mismo contenido que “Nombre”.

Rellenos

Expandiendo la syntaxis de los campos ligeramente, se pueden definir valores de relleno para los campos. Esta opción resulta útil cuando la plantilla se para un caso general, pero se quiere conservar la posibilidad de adaptarla.

Nombre: ${1:Guillermo}
Apellido: ${2:López}
Dirección: ${3:Main Street 1234}
Nombre de usuario: $1

También se pueden utilizar variables en función de relleno:

Nombre: ${1:Guillermo}
Apellido: ${2:López}
Dirección: ${3:Main Street 1234}
Nombre de usuario: ${4:$TM_FULLNAME}

Y, además, es posible anidar rellenos:

Test: ${1:Nested ${2:Placeholder}}

Sustituciones

Además de la sintaxis para rellenos, los campos pueden definiar operaciones más complejas mediante sustituciones. Las sustituciones sirven para general texto a partir de campos idéndicos.

Existen dos variantes de sustituciones:

  • ${variable/expr_regular/formato/}
  • ${variable/expr_regular/formato/opciones}
variable
Nombre de la variable: 1, 2, 3…
expr_regular
Expresión regular compatible con Perl: Más información en Boost library reference for regular expressions.
formato
Véase Boost library reference for format strings.
opciones
Optativo. Una combinación de las siguientes:
i
Realizar búsqueda sin diferenciar las letras por su caja.
g
Remplazar todas las coincidencias de expr_regular.
m
No omitir los saltos de línea.

Usando sustituciones se puede, por ejemplo, subrayar texto cómodamente:

      Original: ${1:Hey, Joe!}
Transformación: ${1/./=/g}

# Resultado:

      Original: Hey, Joe!
Transformación: =========