Espanso : text expander open source pour accélérer la saisie

Combien de fois tapez-vous votre adresse email, votre signature, console.log(), ou une formule de politesse répétitive ? Espanso intercepte ces abréviations pendant que vous tapez et les remplace instantanément par le texte complet, dans n’importe quelle application.

Ce que fait Espanso

Espanso est un text expander : il surveille ce que vous tapez et remplace des déclencheurs courts par du texte long ou des templates dynamiques. Il fonctionne dans toutes les applications Windows, macOS et Linux, se configure en YAML, et supporte des variables dynamiques (date, heure, clipboard, scripts).

Installation

# Winget
winget install Espanso.Espanso

# Ou téléchargement sur espanso.org

Espanso tourne en tâche de fond dans la barre système après installation.

Configuration de base

La configuration principale se trouve dans %APPDATA%\espanso\match\base.yml :

matches:
  # Adresse email
  - trigger: ":email"
    replace: "contact@mon-domaine.com"

  # Signature
  - trigger: ":sig"
    replace: |
      Cordialement,
      Alice Dupont
      Développeuse — Mon Entreprise

  # Date du jour
  - trigger: ":date"
    replace: "{{mydate}}"
    vars:
      - name: mydate
        type: date
        params:
          format: "%d/%m/%Y"

  # Date + heure
  - trigger: ":now"
    replace: "{{datetime}}"
    vars:
      - name: datetime
        type: date
        params:
          format: "%d/%m/%Y à %H:%M"

Snippets de développement

matches:
  # console.log rapide
  - trigger: ":cl"
    replace: "console.log($|$);"

  # Fonction arrow TypeScript
  - trigger: ":fn"
    replace: "($|$) => {}"

  # Try/catch
  - trigger: ":try"
    replace: |
      try {
        $|$
      } catch (error) {
        console.error(error);
      }

  # TODO avec date
  - trigger: ":todo"
    replace: "// TODO ({{date}}): $|$"
    vars:
      - name: date
        type: date
        params:
          format: "%Y-%m-%d"

  # Import React
  - trigger: ":ir"
    replace: "import React from 'react';"

  # Commentaire de section
  - trigger: ":sec"
    replace: "// ─────────────────────────────────────────────"

Templates avec formulaires

Espanso peut ouvrir un formulaire pour remplir des variables avant l’expansion :

matches:
  - trigger: ":pr"
    form: |
      Titre de la PR : [[title]]
      Ticket : [[ticket]]
      Type : [[type]]
    form_fields:
      type:
        type: choice
        values:
          - feat
          - fix
          - refactor
          - docs
    replace: |
      ## {{title}}

      Ticket : {{ticket}}
      Type : {{type}}

      ### Changements

      -

      ### Tests

      - [ ]

Variables dynamiques

matches:
  # Contenu du presse-papier transformé en majuscules
  - trigger: ":upper"
    replace: "{{result}}"
    vars:
      - name: clipboard
        type: clipboard
      - name: result
        type: script
        params:
          args:
            - python3
            - -c
            - "import sys; print(sys.argv[1].upper())"
            - "{{clipboard}}"

  # UUID généré
  - trigger: ":uuid"
    replace: "{{uuid}}"
    vars:
      - name: uuid
        type: script
        params:
          args:
            - python3
            - -c
            - "import uuid; print(uuid.uuid4())"

Packages de la communauté

Espanso dispose d’un hub de packages : hub.espanso.org

# Installer un package
espanso install all-emojis      # :smile: → 😊
espanso install html-utils      # :a → <a href="">...</a>
espanso install git-utils       # :gst → git status, :gco → git checkout

Organisation en fichiers multiples

%APPDATA%\espanso\match\
├── base.yml          # snippets globaux
├── dev.yml           # snippets développement
├── email.yml         # templates email
└── signatures.yml    # signatures

Tous les fichiers .yml du dossier match/ sont chargés automatiquement.

Désactiver temporairement

Alt+F9    → désactiver / réactiver Espanso globalement

Utile quand vous tapez délibérément un déclencheur dans un éditeur de code ou une présentation.

Filtrer par application

filter_apps:
  - name: Espanso filter
    filter_title: ".*Visual Studio Code.*"
    matches:
      - trigger: ":log"
        replace: "console.log($|$);"

Certains snippets ne s’activent que dans VS Code, d’autres seulement dans Outlook, etc.

+ Les points forts

  • Cross-platform — même configuration sous Windows, macOS et Linux
  • YAML lisible et versionnable — les snippets se committent dans git, se partagent en équipe
  • Formulaires interactifs — remplissez des templates avec des champs dynamiques
  • Scripts — exécutez n’importe quel script Python, PowerShell, Node pour les valeurs dynamiques
  • Packages communautaires — emoji, HTML, git, markdown — installez des collections prêtes à l’emploi
  • Open source — aucun abonnement, aucune limite de snippets

- Les points faibles

  • Configuration en YAML uniquement — pas d’interface graphique pour créer les snippets, tout se fait dans des fichiers texte
  • Conflits possibles — les déclencheurs courts peuvent s’activer accidentellement. Préfixer avec : ou ;; réduit le risque
  • Redémarrage requis — modifier les fichiers YAML nécessite de recharger Espanso (espanso restart)

En résumé

Espanso est l’outil qui amortit le mieux le temps d’installation. Une heure à configurer vos 20 snippets les plus courants économise des dizaines de minutes chaque jour. Adresses, signatures, templates de code, commandes git, dates — tout ce que vous tapez plus d’une fois par jour mérite un déclencheur Espanso.


Voir aussi :

  • Flow Launcher — launcher applicatif complémentaire à Espanso
  • Ditto — gérer l’historique du presse-papier
  • AutoHotkey — aller plus loin dans l’automatisation Windows