254 - Escribir mas con menos, espanso
En este episodio del podcast te cuento como ser mas productivo escribiendo mas con menos, utilizando un extensor de texto como es espanso
Hace ya casi dos años del podcast número 50, en el que te hablé sobre escribir más rápido con expansores de texto y hoy de nuevo te vengo con la misma cantinela, te vengo a hablar sobre, tal y como aclaró Torete un extensor de texto. Sobre una herramienta, que todo aquel preocupado por su productividad, debería tener en su caja de herramientas. Se trata de espanso, una herramienta que ha venido a sustituir, para mi tristeza, por llamarlo de alguna forma, a una de producción propia. Pero, todo tiene su porque y su razón, y esto te lo explicaré, en el episodio de hoy.
La cuestión, es que si pasas muchas horas de tu vida escribiendo, necesitas una herramienta como espanso, que te ayude a mejorar y a ser mas productivo, evitando repetir una y otra vez los mismos textos, o incluso, simplemente para algo tan sencillo, para utilizar algo tan interesante como los emojis 😄. Y esto también lo explicaré a continuación.
Escribir mas con menos, espanso
¿Que es esto de los extensores de texto?
Se trata de una herramienta que reemplaza una palabra clave por un texto mientras escribes. De esta forma, tu defines tantas palabras claves como necesitas, y conforme vas escribiendo el extensor de texto se encarga de reemplazar esa palabra clave por lo que tu consideres.
¿Cuantas veces a lo largo del día escribes tu correo electrónico?¿O la fecha del día?, o incluso, en el caso de que no tengas configurada la firma del correo electrónico, porque utilizas diferentes clientes, ¿cuantas veces escribes la firma?
Con el extensor de texto, simplemente reemplazarás esa palabra clave que puede ser perfectamente ;correo
por tu correo electrónico. Esto te va a llevar a ser mucho mas productivo, sin lugar a dudas.
¿Porque cambio de extensor de texto?
Hace ya algún tiempo que venía buscando un extensor de texto para Windows, una herramienta que me ayudara a no tener que repetir determinadas respuestas enlatadas. Y esto no tiene que ser necesariamente por correo electrónico, también por otros medios, como puede ser incluso Telegram.
Haciendo una búsqueda en internet, me topé con espanso. Una herramienta que algún oyente del podcast o lector del blog, que me disculpe porque no he conseguido localizar quien fue, me recomendó la herramienta de la que te voy a hablar, me recomendó espanso.
La cuestión es que una de las grandes ventajas de espanso, entre otras, es que es multiplataforma, con lo que la podía utilizar tanto en para atareao.es como para el trabajo, y esto es algo que me resulta muy cómodo.
Pero no creas que me llamó esto la atención. Lo que realmente me llamó la atención es que esta herramienta está implementada en Rust. Y no solo esto, sino que además el desarrollador de la aplicación, Federico Terzi tiene algunos vídeos en YouTube y había visto algunos de ellos, y todo unido, fue lo que me empujó a dar una segunda oportunidad a esta herramienta. Al final, a pesar que ha triunfado mi parte mas sentimental, lo cierto es que estoy realmente satisfecho con el resultado… Viva lo irracional.
Sin embargo, recordaba, que cuando la probé en su momento, no terminó de funcionar como yo esperaba. Por ejemplo, cuando escribía el trigger
que viene por defecto :espanso
, me escribía Hi there111
en lugar de Hi there!!!
. Sin embargo, esto, ya está resuelto como te comentaré mas adelante y ahora puedo utilizar espanso en todos los equipos, con la increíble ventaja que esto representa.
Así, definitivamente, esto a representado un nuevo cambio en mi vida, reemplazando las otras herramientas que estaba utilizando por espanso.
Sobre espanso
Como te comentaba anteriormente, espanso es un herramienta multiplataforma para reemplazar una palabra clave por un texto. Esto de que sea multiplataforma es una verdadera ventaja, porque por un lado es la misma herramienta allá donde vas. Pero no solo, esto, sino como verás a continuación, también vas a poder llevar tus palabras clave a todas tus plataformas 😄.
Al documentarme sobre la aplicación me ha llamado la atención, que para implementar esta herramienta, Federico, ha utilizado hasta tres tecnologías,
- Rust para la mayoría del proyecto.
- C++ para construir la capa de compatibilidad tanto para Windows como para Linux
- Objective C igual, que en el caso anterior, para contruir la capa de compatibilidad, pero en este caso para MacOS.
Además de estas características, indicarte que tiene algunas cuestiones, sobre las que profundizaré como es un sistema de gestión de paquetes y una tienda oficial desde donde descargarte mas sustituciones. Pero además tiene soporte para emojis, que es una característica que estaba buscando.
Instalar espanso
En este caso te recomiendo que visites la página de instalación de espanso tanto para Microsoft como MacOs. En el caso de Linux, aunque igualmente te recomiendo que le des una visita, si eres un ansias, puedes instalarla ejecutando las siguientes instrucciones en un terminal,
wget https://github.com/federico-terzi/espanso/releases/latest/download/espanso-debian-amd64.deb
sudo dpkg -i espanso-debian-amd64.deb
Pero además si quieres hacer uso de una característica especial para formularios, necesitas instalar una herramienta adicional llamada modulo
, también implementada por el propio Federico. La instalación es tremendamente fácil,
mkdir -p ~/.local/bin
wget https://github.com/federico-terzi/modulo/releases/latest/download/modulo-x86_64.AppImage -O ~/.local/bin/modulo.AppImage
chmod u+x ~/.local/bin/modulo.AppImage
sudo ln -s ~/.local/bin/modulo.AppImage /usr/bin/modulo
Las instrucciones que te he puesto, no coinciden exactamente con las que están en la página de espanso, porque prefiero utilizar ~/.local/bin
. Esto son manías, cada uno que se aguante las suyas.
Esto de los formularios te lo comentaré mas a delante, para que veas las posibilidades que esto te va a ofrecer.
Para los ansias
Si eres un ansias y no quieres esperar mas, ya puedes probar el funcionamiento de espanso. Y es que espanso se inicia de forma automática. Tan solo abre cualquier aplicación de edición de texto, o un terminal si lo prefieres, y escribe :espanso
, que tiene que reemplazar lógicamente por Hi there!!!
, si todo ha ido correctamente claro.
Primeros pasos
¿Como puedo saber si espanso está funcionado? En Windows y MacOS esto es sencillo, por que en la barra de estado aparece el icono de espanso. En Linux, tienes que abrir un terminal y escribir el comando espanso status
y en el caso de que no esté funcionando ejecutar espanso start
.
Ahora ha llegado el momento de configurar espanso para sacarle el máximo provecho. Para esto, lo primero es editar el archivo de configuración de espanso. Esto lo puedes hacer directamente en el terminal ejecutando espanso edit
. Esto abre tu editor preferido y la configuración que se encuentra en ~/.config/espanso/default.yml
.
Dentro de este archivo de configuración que está en formato YAML
, encontrarás una sección llamada matches
. Si no conoces el forma YAML
, te recomiendo un capítulo del tutorial sobre Ansible que está dedicado a YAML como reemplazo de JSON formato. No, te preocupes, porque es general y no se centra exclusivamente en Ansible.
Como te decía, dentro de la sección de matches
encontrarás diferentes elementos del tipo,
- trigger: ":espanso"
replace: "Hi there!!!"
Donde el trigger
es la palabra clave, mientras que el replace
es el texto con el que reemplazarás esa palabra clave.
No es necesario que te diga, que la gran ventaja de esto es que tu puedes crear tus propias palabras clave. Pero no solo esto, sino que al estar en texto plano o texto sin formato, todo esto lo puedes tener en cualquier servicio en la nube tipo Dropbox, Google Drive, pero no solo esto, sino que también lo puedes tener en un repositorio en GitHub, GitLab o donde tu quieras. Y esto simplemente es brutal.
Cada vez que modifiques el archivo de configuración, es necesario reiniciar espanso, pero no te preocupes, que de esto ya se encarga la propia herramienta, de forma que al detectar cualquier cambio se reinicia, para tenerlos en cuenta desde ese mismo momento.
Paquetes
Otra interesante herramienta que te proporciona espanso es la posibilidad de instalar paquetes 😮. Paquetes que están disponibles para consumir directamente, sin que tengas que escribir ni una sola línea 💪. Pero, además, no te tienes que preocupar por instalarlos desde repositorio, sino que espanso se encarga de esta tarea. Por ejemplo, si quieres instalar un paquete con los emojis básicos, solo tienes que ejecutar la siguiente instrucción,
espanso install basic-emojis
espanso restart
Y tendrás al alcance de tus dedos, y nunca mejor dicho las siguientes palabras clave,
Palabra clave | Emoji |
---|---|
:lol | 😂 |
:llol | 😂😂😂😂 |
:sad | ☹ |
:ssad | ☹☹☹☹ |
:sml | 😊 |
:strong | 💪 |
:stlol | 💪😂 |
:ba | 😎 |
:ok | 👍 |
:ook | 👍👍👍👍 |
:happy | 😄 |
:cry | 😭 |
:wow | 😮 |
Y de nuevo si eres un ansias 😂, ya puedes empezar a probar con :lol
.
Puedes encontrar todo un listado de paquetes en el hub de espanso. Y te puedo asegurar que hay de todo tipo, y a cada cual mas espectacular.
Existen mas opciones para instalar paquetes, pero para ello te recomiendo que visites directamente la página de espanso. Por otro lado si quieres saber los paquetes que tienes instalados ejecuta,
espanso package list
Y si quieres desinstalar un paquete la instrucción a ejecutar es espanso uninstall <nombre-del-paquete>
.
Creando tus propios paquetes
Como te decía una de las grandes ventajas de espanso es que su configuración es un archivo de texto plano. Y no solo esto, sino que también los paquetes son archivos de texto plano. Y no solo esto sino que los puedes tener en un repositorio de GitHub. Con la ventaja que esto supone, simplemente un git push
y un git pull
y ya lo tienes sincronizado en tus dispositivos.
Si quieres crear tu propio paquete simplemente tienes que hacer un fork del paquete de ejemplo y modificarlo según necesites. Incluso lo puedes publicar en el hub de espanso, siguiendo las instrucciones que aparecen en la documentación oficial.
Sustituciones
Evidentemente la parte mas interesante de esta herramienta es las sustituciones. Aquí tienes diferentes opciones, y todas siguiendo las características marcadas por el formato YAML
, según te he indicado anteriormente.
Sustituciones estáticas
Las sustituciones estáticas son aquellas que no varían de una vez a otra. Pueden ser en una sola línea, como en,
- trigger: "hola"
replace: "mundo"
o de varias líneas como en
- trigger: "varias líneas"
replace: |
este es un ejemplo
de al menos dos líneas
Sustituciones dinámicas
Pero no solo puedes hacer sustituciones estáticas, sino que también puedes hacer sustituciones dinámicas, como por ejemplo para poner la fecha,
- trigger: ":fecha"
replace: "Hoy es {{fecha}}"
vars:
- name: fecha
type: date
params:
format: "%d-%m-%Y"
Variables globales
Otra interesante opción que tienes a tu disposición es la posibilidad de utilizar variables de globales que puedes utilizar en cualquier parte. Por ejemplo, para el caso de tu nombre o de otros datos. Esto va en tu archivo de configuración default.yml
, con un aspecto como el siguiente,
global_vars:
- name: "global1"
type: "dummy"
params:
echo: "Global"
Seleccionando la posición del cursor
En ocasiones, no simplemente querrás reemplazar una palabra clave, sino que además querrás que el cursor quede en una posición concreta. Por ejemplo, en el caso de escribir HTML
, si utilizas <span></span>
vas a querer que el cursor quede en medio. Esto lo puedes hacer de la siguiente forma,
- trigger: ":span"
replace: "<span>$|$</span>"
Solo puedes utilizar un posicionamiento, en el caso de que quieras hacer mas cosas, vas a necesitar recurrir a formularios.
Scripts
Es posible extender la funcionalidad de espanso con el uso de scripts. Así puedes crear un sencillo script en Python que imprima Hola mundo
, como en,
print("Hola mundo")
Posteriormente añadir esto en tu lista de reemplazos,
- trigger: ":script"
replace: "{{salida}}"
vars:
- name: salida
type: script
params:
args:
- python
- script.py
Shell extensión
De la misma forma que puedes ejecutar un script para que te devuelva su contenido, también es posible crear una sustitución que te permita ejecutar una instrucción en tu shell preferida y que te devuelva el resultado. Por ejemplo,
- trigger: ":ip"
replace: "{{output}}"
vars:
- name: output
type: shell
params:
cmd: "curl 'https://api.ipify.org'"
shell: bash
Puedes elegir diferentes shell
dependiendo de la plataforma en la que estés trabajando.
Formularios
Es posible utilizar formularios, algo realmente útil en el caso de que tengas que introducir varios parámetros. Por ejemplo, de nuevo, en el caso de que trabajes con HTML
, y necesites introducir una dirección de la forma <a href="https://atareao.es>atareao.es</a>
, esto lo puedes hacer con formularios de la siguiente forma,
- trigger: ";a"
form: "<a href=\"{{url}}\">{{web}}</a>"
No solo esto, sino que también puedes utilizar cajas de texto multilínea e incluso combos o listas para elegir diferentes opciones.
- trigger: ";form"
form: |
{{opciones}}
form_fields:
opciones:
type: choice
values:
- Primera opción
- Segunda opción
Configuración
Como te he adelantado, la configuración de espanso es formato YAML
con todas las ventajas que esto aporta. Puedes editarlo utilizando espanso edit
.
Puedes organizar tus reemplazos en diferentes archivos para que sea mas sencilla su edición. Así, por ejemplo si lo que quieres es crear reemplazos específicos para los correos electrónicos lo puedes hacer con espanso edit email
.
Otra interesante característica que se une a la anterior es la posibilidad de utilizar reemplazos dependiendo de la aplicación en la que te encuentres. Para ayudarte con esto tienes la opción espanso detect
que te ofrece información sobre la ventana en la que te encuentras y que puedes utilizar posteriormente para estos filtros.
Aparte de esto, tienes una completa lista de opciones disponibles para configurar y personalizar el funcionamiento de espanso. Por ejemplo, yo he utilizando la opción backend: Clipboard
para que me funcionara correctamente espanso.
Recuerda que si quieres sincronizar tu configuración de espanso, utilizando un servicio en la nube como Dropbox, puedes utilizar enlaces simbólicos.
Conclusión
Sinceramente, con todo lo que has visto hasta el momento sobre espanso seguro que te has quedado tan sorprendido como yo de las posibilidades que se acaban de abrir delante de tus ojos. Esto es sinceramente espectacular, y solo te queda ponerlo en marcha para llevar tu productividad a otra esfera.
Indicar que espanso es código abierto liberado bajo licencia GPL-3, y que puedes ayudar al desarrollo de espanso no solo contribuyendo con el código, sino también vía donación. Yo, ya hecho mi aportación 😄.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Imagen de portada de Glenn Carstens-Peters en Unsplash