12k
All articles

Utiliser les Text Expanders pour Git, les PRs et les Prompts IA

Snippets Espanso pour Git, PR et prompts IA : utilisez shell, presse-papiers et curseur pour créer des expansions contextuelles.

OpenReplay Team
OpenReplay Team
Utiliser les Text Expanders pour Git, les PRs et les Prompts IA

Un text expander transforme un déclencheur court comme :cm en un bloc de texte complet, où que vous écriviez — messages de commit, descriptions de PR, prompts LLM — vous évitant ainsi de ressaisir les mêmes modèles génériques des dizaines de fois par jour. Le choix privilégié pour les développeurs est Espanso, un expander gratuit, open-source et multiplateforme écrit en Rust, dont toute la configuration se présente en YAML simple que vous pouvez versionner avec git. Cet article est un guide pratique prêt à l’emploi : de vrais snippets Espanso pour les commandes git, des squelettes de PR et des prompts IA réutilisables, ainsi que les trois leviers dynamiques — sortie shell, injection du presse-papiers et positionnement du curseur — qui transforment du texte statique en outils contextuels.

Points clés à retenir

  • Espanso est un text expander gratuit, open-source et multiplateforme écrit en Rust ; installez-le sur macOS avec brew install --cask espanso (macOS 11+), sur Linux via le paquet .deb ou l’AppImage, et sur Windows depuis l’installateur officiel.
  • Pour rendre un snippet de commit contextuel, injectez la branche courante via une variable shell exécutant git rev-parse --abbrev-ref HEAD, de sorte qu’un déclencheur se développe toujours avec la branche sur laquelle vous vous trouvez réellement.
  • Espanso positionne le curseur après l’expansion grâce à l’indicateur $|$, mais vous ne pouvez définir qu’un seul indicateur par correspondance, et il peut se comporter de manière imprévisible dans les éditeurs à auto-indentation — conservez donc les squelettes de PR dans la zone de description du navigateur.
  • Espanso ne dispose pas de variable native pour le « texte sélectionné » : copiez d’abord le code, puis déclenchez un snippet qui lit {{clipboard}} pour envelopper une fonction mise en surbrillance dans un prompt LLM.
  • La configuration étant en YAML simple, vous pouvez versionner l’intégralité du répertoire dans un dépôt git et partager les snippets d’une équipe sous forme de package Espanso privé.

Pourquoi un text expander a sa place dans votre workflow de développement

Un text expander est tout outil qui surveille vos frappes au clavier et remplace un déclencheur défini par un bloc de texte plus long, optionnellement dynamique, à l’échelle du système. Si votre travail implique de ressaisir continuellement les mêmes textes modélisés — commits conventionnels, descriptions de PR, prompts récurrents — il devient rentable immédiatement. La plupart des gens découvrent les expanders via les signatures d’e-mail ; le gain pour les développeurs est bien plus important, car une grande partie de la boucle terminal-et-GitHub est du texte générique.

Trois outils dominent le marché :

OutilPlateformesPoint fort
EspansoMultiplateforme, open-sourceConfiguration en YAML simple, scriptable via shell et variables dynamiques — le choix retenu ici
Raycast SnippetsCentré sur macOSFonctionnalité de lanceur avec espaces réservés dynamiques
TextExpanderMultiplateforme (payant)Orienté équipe, groupes de champs partagés

Choisissez Espanso lorsque vous souhaitez une configuration scriptable, versionnée sous git, qui vous suit d’une machine à l’autre.

Installez-le et enregistrez le service en arrière-plan :

# macOS (macOS 11+)
brew install --cask espanso
espanso service register
espanso start

Sur Linux, la documentation officielle d’installation recommande le paquet .deb (téléchargez-le avec wget, puis sudo apt install ./espanso-debian-x11-amd64.deb) ou l’AppImage, suivi de espanso service register et espanso start ; la prise en charge de Wayland est expérimentale. Sur Windows, utilisez l’installateur disponible sur espanso.org. Modifiez les snippets à tout moment avec espanso edit et rechargez avec espanso restart.

Snippets git : développez les commandes que vous ressaisissez sans cesse

Stockez les déclencheurs git dans un fichier de correspondances et laissez :cm générer un message au format Conventional Commits ou :undo développer une commande que vous n’arrivez jamais à retenir. Voici un ensemble de départ statique :

# ~/.config/espanso/match/git.yml
matches:
  - trigger: ":cm"
    replace: "feat($|$): "
  - trigger: ":undo"
    replace: "git reset --soft HEAD~1"
  - trigger: ":unstage"
    replace: "git restore --staged ."
  - trigger: ":wip"
    replace: "chore: wip [skip ci]"

Le $|$ dans :cm place le curseur entre les parenthèses, vous permettant de saisir la portée et de continuer.

Rendons maintenant un snippet contextuel. L’extension shell d’Espanso exécute une commande et insère son résultat, vous permettant ainsi d’intégrer la branche courante dans le texte :

  - trigger: ":br"
    replace: "{{branch}}"
    vars:
      - name: branch
        type: shell
        params:
          cmd: "git rev-parse --abbrev-ref HEAD"

Saisissez :br dans le corps d’un commit ou un commentaire de PR, et le déclencheur se développe en la branche sur laquelle pointe HEAD — sans copier-coller, sans nom de branche obsolète.

Modèles de PR : un squelette à compléter

Un déclencheur :pr peut se développer en un squelette complet Résumé / Modifications / Tests / Captures d’écran, avec le curseur positionné dans le premier champ via $|$, transformant une zone de PR vide en formulaire :

  - trigger: ":pr"
    replace: |
      ## Summary
      $|$

      ## Changes
      -

      ## Testing
      -

      ## Screenshots

Espanso prend en charge l’indicateur de curseur $|$, mais vous ne pouvez en définir qu’un seul par correspondance — les indicateurs supplémentaires sont ignorés — et la documentation avertit qu’il peut se comporter de manière imprévisible dans les expansions multiligne, car Espanso simule des pressions sur la touche flèche gauche, ce qui entre en conflit avec l’auto-indentation des éditeurs de code. Déclenchez :pr dans la zone de description de GitHub, et non dans votre IDE, pour un comportement prévisible.

Snippets de prompts IA : des modèles LLM réutilisables

Traitez les prompts comme des modèles de commit : définissez :review, :explain et :tests une seule fois et cessez de les réécrire. Les versions statiques sont simplement du texte :

# ~/.config/espanso/match/ai.yml
matches:
  - trigger: ":explain"
    replace: "Explain the following code line by line, then note any bugs or edge cases:\n\n"
  - trigger: ":tests"
    replace: "Write unit tests for the following code. Cover happy path and edge cases:\n\n"

La fonctionnalité différenciante consiste à injecter du code que vous venez de copier. Espanso ne dispose pas de variable native pour le « texte sélectionné », aussi le schéma consiste à copier d’abord, puis à déclencher un snippet qui lit {{clipboard}} via l’extension presse-papiers :

  - trigger: ":review"
    replace: "Review this code for bugs, security, and readability:\n\n```\n{{clipboard}}\n```"
    vars:
      - name: clipboard
        type: clipboard

Sélectionnez une fonction, appuyez sur copier, saisissez :review, et vous obtenez un prompt de revue de code délimité, prêt à coller dans n’importe quel modèle. Les utilisateurs avancés peuvent simuler la copie dans une variable shell — la solution de contournement communautaire exécute xdotool key --clearmodifiers ctrl+c avant de lire le presse-papiers — mais le flux en deux touches copier-puis-déclencher est plus simple et portable.

Fonctionnement des variables dynamiques d’Espanso

Un snippet dynamique lit sa valeur depuis une extension — type: date pour les horodatages, type: shell pour la sortie de commande, et type: clipboard pour {{clipboard}} — et Espanso évalue les variables de haut en bas, de sorte que les variables ultérieures peuvent consommer les précédentes. Selon la documentation des variables, les extensions shell et script reçoivent la portée courante sous forme de variables d’environnement, ce qui explique pourquoi une variable shell peut lire une variable presse-papiers définie au-dessus d’elle.

Cet ordre de traitement permet la composition. Un champ de date pour une entrée de changelog :

  - trigger: ":today"
    replace: "{{today}}"
    vars:
      - name: today
        type: date
        params:
          format: "%Y-%m-%d"

Espanso 2.3.0 a ajouté un paramètre tz à l’extension date pour générer des heures dans n’importe quel fuseau horaire IANA. Combinez des variables shell, presse-papiers et date dans une seule correspondance, et vous disposez d’un véritable micro-outil : faites passer le contenu du presse-papiers par un formateur, horodatez-le, et positionnez le curseur là où vous continuez à saisir.

Versionnez votre configuration dans git et partagez-la

La configuration d’Espanso étant en YAML simple — exécutez espanso path pour trouver le répertoire (sous Linux, ~/.config/espanso) — vous pouvez faire un git init du dossier entier, le pousser et le cloner sur chaque machine sur laquelle vous travaillez. Vos snippets deviennent un artefact versionné et révisable, plutôt qu’une configuration propre à chaque poste.

Pour les équipes, publiez des snippets de commit et de PR partagés sous forme de package. Espanso installe des packages depuis n’importe quel dépôt git avec l’option --git, en récupérant directement depuis votre hébergeur :

espanso install team-snippets --git https://github.com/your-org/espanso-snippets --external

Tout le monde bénéficie des mêmes conventions :cm, :pr et :review en une seule commande. TextExpander offre une capacité comparable via des groupes partagés ; Espanso le fait avec les outils git que vous utilisez déjà.

Commencez avec trois fichiers — git.yml, ai.yml et un squelette de PR — committez-les, et ajoutez un snippet chaque fois que vous vous surprenez à ressaisir quelque chose. La configuration évolue avec vos habitudes, et le schéma copier-puis-:déclencheur via le presse-papiers est la technique qui transforme un expander statique en un élément contextuel de votre workflow git et IA.

FAQ

En quoi Espanso diffère-t-il de Raycast Snippets et de TextExpander ?

Espanso est gratuit, open-source, multiplateforme et configuré en YAML simple que vous pouvez versionner dans git et scripter via shell et variables dynamiques. Raycast Snippets est une fonctionnalité de lanceur centrée sur macOS avec des espaces réservés dynamiques. TextExpander est un produit payant et multiplateforme orienté vers les équipes et les groupes de champs partagés. Choisissez Espanso lorsque vous souhaitez une configuration scriptable et versionnée sous git qui vous suit sur toutes les machines sur lesquelles vous travaillez.

Puis-je positionner le curseur à plusieurs endroits après le développement d'un snippet ?

Non. Espanso n'autorise qu'un seul indicateur de curseur par correspondance ; tout indicateur $|$ supplémentaire dans le même remplacement est ignoré. La documentation avertit également que l'indicateur peut se comporter de manière imprévisible dans les expansions multiligne, car Espanso simule des pressions sur la touche flèche gauche, ce qui entre en conflit avec l'auto-indentation des éditeurs de code. Pour les squelettes de PR, déclenchez le snippet dans la zone de description du navigateur plutôt que dans votre IDE, afin que le curseur unique se positionne de manière prévisible.

L'extension shell s'exécute-t-elle dans le répertoire de mon projet pour que les commandes git fonctionnent ?

Oui. L'extension shell d'Espanso exécute la commande dans votre contexte de travail courant, de sorte que type: shell avec cmd exécutant git rev-parse --abbrev-ref HEAD retourne la branche du dépôt dans lequel vous êtes en train de saisir. L'extension insère la sortie standard de la commande dans l'expansion, permettant à un seul déclencheur comme :br de se résoudre en le nom de branche actif, sans copier-coller et sans valeur obsolète.

Où Espanso stocke-t-il sa configuration pour que je puisse la versionner dans git ?

Exécutez espanso path pour afficher le répertoire de configuration plutôt que de coder en dur un emplacement, car il diffère selon le système d'exploitation. Sur Linux, il s'agit généralement de ~/.config/espanso, tandis que macOS utilise un chemin Application Support. Le répertoire contient des fichiers de correspondances en YAML simple, vous pouvez donc faire un git init du dossier entier, le pousser et le cloner sur d'autres machines. Modifiez les fichiers avec espanso edit et rechargez avec espanso restart.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — self-hosted, with full data ownership.

Star on GitHub

We use cookies to improve your experience. By using our site, you accept cookies.