Taper plus vite et faire moins de fautes ? Espanso et LanguageTool à la rescousse.

Toujours les mêmes fautes de frappe ? Les outils pour y mettre fin (macOS à Windows 11).

 Publié le 7 oct. 2026 ·  7 min de lecture

Gagnez en vitesse de frappe et corrigez vos fautes automatiquement avec Espanso et LanguageTool en local, sous macOS et Windows 11. Guide pratique.

Introduction

Bien que je tape au clavier à longueur de journée et que je me relis. C’est indéniable, je fais des fautes de frappe, même des fautes d’orthographe et de grammaire. J’ai également l’impression (et ce n’est pas qu’une impression), de toujours faire les mêmes fautes de frappe.

Pour gagner en productivité et las de moi-même, j’ai décidé de mettre des outils en place.

Pour information, j’ai deux configurations :

  • Professionnellement, j’utilise MS Windows 11 et la suite Office 365.
  • Personnellement, j’utilise macOS et la suite LibreOffice.

Mes objectifs :

  1. Saisir plus rapidement ce que j’ai à taper au clavier,
  2. Corriger automatiquement les erreurs de frappe,
  3. Contrôler et améliorer la qualité de ma saisie.

À noter que sous macOS, j’utilise principalement brew pour l’installation et la gestion des mises à jour des applications que j’installe. L’outil WailBrew permet de faire tout cela sans une ligne de commandes.

Améliorer la saisie grâce au remplacement de texte et à Espanso

Sous macOS, il est très simple d’améliorer la vitesse de la saisie. En effet, avec le remplacement de texte, c’est très rapide et simple. Cela permet de remplacer ou de suggérer automatiquement certaines saisies.

Exemples :

  • Je saisis qd, le système saisit quand,
  • Je saisis tlm, le système saisit tout le monde,
  • Le système ne garde qu’un seul l à renouveler (lorsque je saisis renouveller, le système saisit renouveler),
  • etc.

En revanche, les remplacements sont statiques. De plus, cette fonctionnalité n’est pas disponible sous MS Windows, sauf à installer un outil externe. C’est là que l’outil Espanso peut s’avérer utile.

Je combine le meilleur des deux mondes :

  • Sous macOS, j’utilise les remplacements de texte (qui sont d’ailleurs automatiquement synchronisés et disponibles sur l’iPhone)
  • Sous MS Windows, j’utilise Espanso

Pour l’installer, il faut :

  • utiliser WailBrew ou la ligne de commande suivante : brew install --cask espanso ou
  • télécharger et exécuter le fichier d’installation depuis le site https://espanso.org/install/

Le fichier de configuration

Mon fichier de configuration, config/default.yml contient les lignes suivantes. Je préviens que j’ai expressément activé les statistiques, car j’aime bien voir et avoir les informations statistiques via les lignes de commandes : espanso stats (pour la consultation) et espanso clear (pour la purge, la réinitialisation des statistiques).

show_icon: true -- Voir l'icône dans la barre système
auto_restart: true -- Redémarrer automatiquement Espanso dès qu'un fichier de configuration est modifié
show_notifications: true -- Afficher les notifications (les erreurs de syntaxe)
undo_backspace: false -- Ne pas annuler la saisie d'Espanso avec la touche 'Retour arrière' (backspace)
paste_shortcut_event_delay: 20
key_delay: 0
inject_delay: 0
stats: -- Permettre les statistiques
  enabled: true

Le fichier de correspondances, des corrections

Tout se passe dans le fichier match/base.yml.

Corriger quelques fautes de frappe les plus fréquentes

Quelques idées :

  • Écrire le mot complet plutôt que l’abréviation
  • Ajouter automatiquement les accents
  • Corriger les erreurs de frappe
  • Expliciter les dates relatives
  • …

Quelques corrections :

  - trigger: "plutot"
    replace: "plutôt"
    word: true
    propagate_case: true

  - trigger: "tete"
    replace: "tête"
    word: true
    propagate_case: true

  - trigger: "velocite"
    replace: "vélocité"
    word: true
    propagate_case: true

  - triggers: ["vérfiier", "verifier", "vérfier"]
    replace: "vérifier"
    word: true
    propagate_case: false

Quelques optimisations :

  - trigger: "oe"
    replace: "œ"
    word: true
    propagate_case: true

  - trigger: "<-"
    replace: "←"
    word: true
    propagate_case: false

  - trigger: "->"
    replace: "→"
    word: true
    propagate_case: false

Écrire des dates très rapidement

Ajouter à aujourd'hui, demain, ce jour la date en chiffres.

Exemples :

  • Saisir hier et le texte devient hier (mardi 6 octobre)
  • Saisir auj (ou ce jour) et le texte devient aujourd'hui (mercredi 7 octobre) (ou ce jour (mercredi 7 octobre))
  • Saisir demain et le texte devient demain (jeudi 8 octobre)
  - trigger: "hier"
    replace: "{{yesterday}}"
    word: true
    propagate_case: true
    vars:
      - name: yesterday
        type: date
        params:
          format: "hier (%A %-d %B)"
          offset: -86400 # 24 hours
          locale: "fr-FR"

  - trigger: "ce jour"
    replace: "{{today}}"
    word: true
    propagate_case: true
    vars:
      - name: today
        type: date
        params:
          format: "ce jour (%A %-d %B)"
          locale: "fr-FR"

  - trigger: "auj"
    replace: "{{today}}"
    word: true
    propagate_case: true
    vars:
      - name: today
        type: date
        params:
          format: "aujourd'hui (%A %-d %B)"
          locale: "fr-FR"

  - trigger: "demain"
    replace: "{{tomorrow}}"
    word: true
    propagate_case: true
    vars:
      - name: tomorrow
        type: date
        params:
          format: "demain (%A %-d %B)"
          offset: +86400 # 24 hours
          locale: "fr-FR"

Aller encore plus loin avec les dates pour :

  • :d devient par exemple mercredi 7 octobre 2026 (d comme date)
  • :dc devient par exemple 07 oct. (dc comme date courte)
  • :df devient par exemple 20261007 (df comme date fichier)
  • :dt devient par exemple mercredi 7 octobre 2026 à 16:21 (dt comme date time)
  • :dtc devient par exemple oct. à 16:22 (dtc comme date time court)
  • :dtf devient par exemple 02610071622 (dtf comme date time fichier)
  - triggers: [":d", ":dl"]
    replace: "{{auj}}"
    word: true
    propagate_case: true
    vars:
      - name: auj
        type: date
        params:
          format: "%A %-d %B %Y"
          locale: "fr-FR"

  - triggers: [":dc"]
    replace: "{{auj}}"
    word: true
    propagate_case: true
    vars:
      - name: auj
        type: date
        params:
          format: "%d %b"
          locale: "fr-FR"

  - triggers: [":df"]
    replace: "{{auj}}"
    word: true
    propagate_case: true
    vars:
      - name: auj
        type: date
        params:
          format: "%Y%m%d"
          locale: "fr-FR"

  - triggers: [":dt", ":dtl"]
    replace: "{{auj}}"
    word: true
    propagate_case: true
    vars:
      - name: auj
        type: date
        params:
          format: "%A %-d %B %Y à %H:%M"
          locale: "fr-FR"

  - triggers: [":dtc"]
    replace: "{{auj}}"
    word: true
    propagate_case: true
    vars:
      - name: auj
        type: date
        params:
          format: "%d %b à %H:%M"
          locale: "fr-FR"

  - triggers: [":dtf"]
    replace: "{{auj}}"
    word: true
    propagate_case: true
    vars:
      - name: auj
        type: date
        params:
          format: "%Y%m%d%H%M"
          locale: "fr-FR"

Toute la documentation sur le format des dates est disponible à cet emplacement https://docs.rs/chrono/latest/chrono/format/strftime/index.html et https://espanso.org/docs/matches/extensions/

Insérer un lien au format Markdown

Qui arrive à retenir la syntaxe de la saisie d’un lien dans un fichier Markdown ? Bravo, parce que pas moi.

Dans cet exemple, lors de la saisie de :a, Espanso collera le contenu du presse-papiers entre parenthèses et positionnera l’indicateur de saisie entre deux crochets.

Processus :

  • Vous copiez un lien (depuis votre navigateur par exemple)
  • Dans votre éditeur de fichier Markdown favori, vous saisissez :a
  • Espanso colle le contenu du presse-papiers entre parenthèses
  • Espanso positionne l’indicateur de saisie entre deux crochets
  • Vous pouvez saisir le titre du lien
  - trigger: ":a"
    replace: "[$|$]({{clipb}})"
    vars:
      - name: "clipb"
        type: "clipboard"

Installer et un vérificateur orthographique et grammatical

J’ai utilisé la version payante et en ligne de LanguageTool pendant quelques années, sans aucun problème. J’étais plutôt satisfait. Mais rapidement, j’ai atteint les limites en termes de nombre de requêtes. Est-ce faute à l’extension du navigateur, à mes différents canaux d’utilisation, je l’ignore. En revanche, depuis que j’utilise une version installée localement, je n’ai plus aucun problème.

Pour utiliser LanguageTool, il faut un client et un serveur.

Point d’attention cependant, la version en ligne et payante détecte davantage de problèmes.

LanguageTool est un outil libre qui peut être utilisé depuis plusieurs façons (clients) :

Pour installer le serveur, il faut :

Utilisation en version locale sécurisée

Après avoir installé l’extension dans votre navigateur, il faut procéder à un réglage pour cesser l’utilisation distante au profit d’une utilisation locale, il en est de même pour LibreOffice.

Dans les options du plugin ou dans les options du LibreOffice, il faut soit :

  • indiquer l’adresse locale (par défaut http://localhost:8081/v2, notez l’absence de HTTPS et le port 8081)
  • indiquer une autre adresse de votre choix.

Pour ma part, j’ai souhaité utiliser LanguageTool avec Safari. Safari exigeant que toutes les connexions soient sécurisées, j’ai utilisé Caddy.

Il faut exécuter les commandes suivantes :

caddy run --config /opt/homebrew/etc/Caddyfile
caddy trust

Voici le fichier de configuration de Caddy :

https://localhost:8082 {
    tls internal
    reverse_proxy localhost:8081
}

Après la mise en œuvre du reverse proxy, l’adresse n’est plus http://localhost:8081/v2 mais https://localhost:8082/v2.

Paramètres avancés de LanuguageTool

Les lignes à ajouter dans votre fichier settings.json de VSCodium (Visual Studio Code) :

{
    "languageToolLinter.languageTool.motherTongue": "fr",
    "languageToolLinter.languageTool.level": "picky",
    "languageToolLinter.languageTool.language": "fr",
    "languageToolLinter.diagnosticSeverity": "information",
    "languageToolLinter.diagnosticSeverityAuto": true
}

Les liens utiles


Articles associés

Partage et commentaires

Partager cet article sur :

Poster l'article sur Mastodon pour activer la gestion des commentaires.