Migrar de la configuración YAML de Espanso a un expansor de texto con GUI

Respuesta rápida: Espanso guarda cada snippet como un par trigger/replace dentro de archivos YAML de coincidencias (~/.config/espanso/match/*.yml), lo que significa que añadir o editar un snippet implica abrir un editor de texto, respetar las reglas de indentación de YAML y reiniciar el servicio para probarlo. Migrar a un expansor de texto con GUI como Lightning Assist significa recrear cada match como un snippet en un editor visual: el mismo texto disparador, el mismo reemplazo, pero un campo de formulario en lugar de un archivo. Hoy no existe una importación masiva de YAML, así que la migración es manual, snippet a snippet; la mayoría de las bibliotecas de menos de 50 snippets tardan bastante menos de 15 minutos.
Divulgación: creamos Lightning Assist, un expansor de texto de pago, así que Espanso es competidor nuestro. Espanso es gratuito y de código abierto, y todas las soluciones de abajo son para Espanso mismo: ninguna exige cambiar de herramienta.
Si nunca has abierto ~/.config/espanso/match/base.yml, nada de esto te dirá mucho, y esa es exactamente la audiencia de esta guía: personas que consiguieron que Espanso funcionara, añadieron una docena de snippets, y ahora se preguntan si existe una versión de esto donde no tengan que pensar en YAML en absoluto.
Por qué la configuración YAML de Espanso se vuelve una fricción
Espanso está genuinamente bien construido. Es gratuito, de código abierto, multiplataforma, y su modelo basado en archivos es una decisión de diseño deliberada, no un descuido: YAML es portátil, permite diffs y es programable. La fricción aparece más tarde, cuando ya lo usas día a día:
Archivos de coincidencias repartidos por tu sistema de archivos. Espanso organiza la configuración en una carpeta match/ (qué expandir) y una carpeta config/ (cómo se comporta la expansión), partiendo de match/base.yml. A medida que crece tu número de snippets, o sigues añadiendo a ese único archivo o empiezas a dividir en más archivos .yml; de cualquier forma, encontrar "el de precios" seis meses después significa abrir archivos y revisarlos, porque no hay un cuadro de búsqueda.
La indentación es la sintaxis. Un match básico se ve así:
matches:
- trigger: ":br"
replace: "Best Regards,\nJon Snow"
La propia documentación de Espanso es tajante al respecto: "Make sure to include the indentation, otherwise it won't be valid YAML syntax." Eso está bien para alguien cómodo en un editor de texto, y es exactamente el tipo de cosa que se rompe en silencio cuando pegas un snippet desde Slack, o copias un bloque de varias líneas y el espacio en blanco no viene con él. Normalmente te enteras porque el disparador simplemente no expande: sin diálogo, sin subrayado rojo, solo un snippet que no hace nada en silencio hasta que sales a cazar un espacio perdido.
Sin sincronización, sin equipo. Espanso guarda todo localmente por diseño, algo genuinamente bueno para la privacidad, pero significa que llevar tus snippets a una segunda máquina es una copia manual de archivos, una carpeta de Dropbox, o un repositorio git personal que mantienes tú mismo. No hay cuenta, no hay sincronización multidispositivo integrada, y no hay forma de pasarle tu biblioteca de snippets a un compañero salvo enviándole los archivos .yml y pidiéndole que los coloque en la carpeta correcta.
Reiniciar para probar. Editar un archivo de coincidencias y confirmar que funcionó normalmente implica: guardar, volver a la app donde estás probando, escribir el disparador y, si no se activa, volver al archivo a revisar. Es un bucle corto, pero es un bucle que repites en cada cambio, indefinidamente.
Nada de esto convierte a Espanso en mal software. Lo convierte en software hecho para gente cómoda tratando la configuración como código. Si no es así como quieres pasar tu tiempo, la solución es una GUI, no un editor YAML "mejor".
Cómo es realmente el equivalente en GUI
En un expansor de texto con GUI, un snippet es una fila, no un archivo. Abres un panel (en Lightning Assist se llama "My Snippets"), haces clic en "Create Snippet", escribes el disparador en un campo y la expansión en otro, y guardas. No hay archivo que localizar, ningún servicio que reiniciar, y ninguna indentación que acertar, porque no hay indentación: el texto enriquecido, el formato HTML y el contenido de varias líneas se escriben o pegan directamente en el campo de expansión sin necesidad de escapado. Los snippets se organizan en carpetas que tú nombras, y puedes buscar en toda tu biblioteca en lugar de revisar archivos.
La contrapartida es la esperable: renuncias al acceso directo a archivos (nada de diffs de git sobre tu historial de snippets, nada de editar en Vim) a cambio de no necesitar para nada la mecánica de YAML.
Espanso → Lightning Assist: mapa de conceptos
Si ya piensas en el vocabulario de Espanso, así es como se traduce cada pieza:
| Concepto de Espanso | En YAML | Equivalente en GUI |
|---|---|---|
| Match | Una entrada bajo matches: en un archivo .yml |
Un snippet: una fila en el panel de Snippets |
| Trigger | trigger: ":br" |
El campo Trigger: escribe la misma abreviatura directamente, sin necesidad de dos puntos salvo que quieras conservarlos |
| Replace | replace: "Best Regards,\nJon Snow" |
El texto de expansión del snippet: texto enriquecido, HTML y contenido de varias líneas compatibles de forma nativa |
| Vars / extensions (fecha, shell, portapapeles, formulario) | Un bloque vars: que referencia un tipo de variable |
Marcadores de posición insertados en la expansión: [#Date#], [#Name#] y variables de portapapeles |
Archivos de coincidencias (base.yml, .yml personalizados) |
Archivos dentro de ~/.config/espanso/match/ |
Carpetas en el panel de Snippets: organización visual en lugar de por nombre de archivo |
Recargar / espanso restart |
Reinicio manual del servicio para aplicar cambios | Nada que hacer: los snippets están activos en cuanto guardas |
| Triggers con regex, matches con comandos de shell | YAML + scripting, específico de Espanso | No replicado. Si esto es central en tu flujo de trabajo, quédate con Espanso para estos casos |
Esa última fila importa: esta es una guía de migración, no una afirmación de que "Lightning Assist puede hacer todo lo que hace Espanso". Los triggers basados en patrones regex y los matches respaldados por comandos de shell son puntos fuertes genuinos de Espanso sin equivalente en GUI aquí.
Paso a paso: migrar tus snippets manualmente
- Encuentra tus matches existentes. Abre
~/.config/espanso/match/base.ymly cualquier otro archivo.ymlpersonalizado que hayas creado. Cada partrigger/replacees algo que vas a recrear. - Instala el expansor con GUI y sáltate cualquier archivo de configuración. Prueba Lightning Assist gratis durante 14 días, sin tarjeta de crédito. La app se abre directamente en su panel de snippets; no hay ningún archivo de configuración que escribir antes.
- Recrea cada match como un snippet. Haz clic en New Snippet, pega el texto del disparador en el campo Trigger (mantén
:bro/addrexactamente igual si te gusta esa convención; cualquier texto es un disparador válido) y pega el texto de reemplazo en el campo de expansión. - Reconstruye las variables como marcadores de posición. Una variable de fecha se convierte en el marcador
[#Date#]; una variable de portapapeles se convierte en el marcador de portapapeles; el texto plano sigue siendo texto plano. Las variables de comando shell y los triggers regex no tienen equivalente directo: deja esos matches en Espanso si los necesitas. - Configura tu modo de disparo. La expansión As-You-Type (escribes el disparador y expande en línea) es la predeterminada y no necesita configuración. Si prefieres pulsar una tecla después de escribir el disparador, configúralo una vez en Settings → Triggers.
- Prueba antes de borrar nada. Prueba cada snippet en un documento de borrador. Mantén tu configuración de Espanso hasta que hayas confirmado que el conjunto migrado funciona como esperas; no pasa nada por tener ambos coexistiendo temporalmente.
Sé realista sobre el tiempo que lleva: hoy no existe una importación masiva de YAML, así que cada snippet se recrea a mano. Para una biblioteca de menos de 50 snippets, eso suele ser bastante menos de 15 minutos. Si estás migrando 100 o más entradas, al menos la estructura de YAML facilita el copiar y pegar: lee el disparador y el valor de reemplazo de cada bloque y pégalos en los campos correspondientes de la GUI.
Qué ganas y qué pierdes
Qué ganas: sin archivos de configuración, sin el bucle de reiniciar para probar, una biblioteca de snippets buscable organizada en carpetas, comandos de IA que reescriben o traducen el texto seleccionado con un atajo, voz a texto por pulsar y hablar en la misma app, sincronización automática en la nube entre dispositivos, y uso compartido de snippets en equipo si lo necesitas. Todo esto funciona en Windows, macOS y Linux desde la misma cuenta.
Qué pierdes: Espanso es gratuito y de código abierto, para siempre; el plan gratuito de Lightning Assist tiene un tope de 3 snippets, con snippets, carpetas y uso compartido en equipo ilimitados por 5,99 $/mes tras una prueba de 14 días (los comandos de IA y el uso de voz consumen Créditos IA comprados por separado). También pierdes los triggers basados en regex y los matches con comandos de shell, que no tienen equivalente en el modelo de GUI. Si esas son tus razones para usar Espanso, esta migración no es para ti, y es una razón legítima para quedarte.
Si quieres una GUI sin abandonar del todo el ecosistema de Espanso, existen proyectos de la comunidad: espansoGUI (Rust/Iced, en Flathub), EspansoEdit (freeware para Windows) y el IDE EspansoGUI. Vale la pena probarlos, pero cada uno es una capa separada, mantenida por voluntarios, sobre los mismos archivos YAML de siempre; el propio Espanso sigue sin tener una GUI oficial (la última versión estable del proyecto principal es la v2.4.0, julio de 2026). Si lo que quieres es una herramienta donde la GUI sea el producto, esa es la brecha que cierra esta migración.
Preguntas frecuentes
¿Puedo importar mis archivos YAML de Espanso directamente?
Hoy no; no existe una importación masiva. Recreas cada match como un snippet en el editor visual. Para la mayoría de las bibliotecas de menos de 50 snippets esto lleva bastante menos de 15 minutos; las bibliotecas más grandes tardan proporcionalmente más, ya que sigue siendo uno a uno.
¿Voy a perder mis triggers basados en regex o mis matches con comandos de shell?
Sí. Son capacidades específicas de Espanso construidas sobre su modelo YAML/scripting, y no hay equivalente en GUI para ellas aquí. Si los triggers regex o los matches respaldados por shell son centrales en tu configuración, sigue usando Espanso para esos casos y considera un expansor con GUI solo para tus snippets más simples y estáticos.
¿Puedo mantener el mismo texto de disparador, como :br o /addr?
Sí. El campo Trigger acepta cualquier texto que escribas, incluyendo un : o / inicial si esa es la convención a la que estás acostumbrado. Nada te obliga a cambiar tu estilo de abreviaturas durante la migración.
¿Existe una GUI oficial de Espanso que debería probar antes de cambiar de herramienta por completo?
No una oficial. Proyectos de la comunidad como espansoGUI, EspansoEdit y el IDE EspansoGUI añaden una capa gráfica, pero son herramientas separadas, mantenidas por voluntarios, encima de los mismos archivos YAML; sigues estando a un paso de la configuración en bruto. Si quieres que la GUI sea todo el producto en lugar de un añadido, de eso trata esta migración.
Lecturas relacionadas
- La mejor alternativa a Espanso en 2026 — la comparativa completa de funciones, precios y quién debería cambiar
- Expansor de texto para Linux — cómo funciona la expansión con GUI en GNOME, KDE y terminales
- Lightning Assist frente a Espanso — comparación detallada
- ¿Espanso no funciona? 9 soluciones habituales — si primero solo quieres que tu configuración actual vuelva a funcionar
Fuentes
- Espanso — documentación de introducción (Get Started) — estructura de archivos de coincidencias, sintaxis YAML
- Espanso — documentación de instalación en Linux — métodos de instalación por distribución
- Precios de Lightning Assist — detalles oficiales del plan