Maîtrise de Vintageous : Personnalisation des Mappages de Clés et Enregistrement de Macros pour Sublime Text

Introduction aux Fonctionnalités Avancées de Vintageous

Vintageous est un plugin pour Sublime Text 3 qui émule les fonctionnalités de Vi/Vim, offrant une édition efficace basée sur des commandes classiques. Ce guide se concentre sur des techniques avancées pour personnaliser les mappages de clés et utiliser l'enregistrement de macros, permettant de créer un environnement d'édition optimisé.

Personnalisation des Mappages de Clés dans Vintageous

Fonctionnement du Système de Mappage

Le système de mappage de Vintageous est géré dans le fichier vi/mappings.py et supporte plusieurs modes d'édition indépendants. Les règles de mappage sont stockées dans un dictionnaire structuré qui inclut les modes INSERT, NORMAL, VISUAL, entre autres. Chaque mode possède son propre ensemble de mappages, gérés par des méthodes telles que add() pour définir des séquences de touches et les commandes associées.

Exemple de structure du dictionnaire de mappages :

mapping_dict = {
    "mode_insert": {},
    "mode_normal": {},
    "mode_visual": {},
    "mode_visual_line": {},
    "mode_operator_pending": {},
    "mode_visual_block": {},
    "mode_select": {}
}

Exemples Pratiques de Mappages

Mappage de base : Remapper une séquence pour quitter le mode insertion, par exemple en utilisant fd au lieu de Échap. Cela nécessite d'ajouter une entrée dans le fichier de configuration des touches.

// Dans le fichier .sublime-keymap de l'utilisateur
{
    "keys": ["f", "d"],
    "command": "vi_exit_insert_mode",
    "context": [{"key": "vi_mode", "operand": "insert"}]
}

Mappage avancé : Créer un raccourci pour commenter plusieurs lignes en mode visual. Par exemple, utiliser Ctrl+; pour déclencher une commande de commentaire personnnalisée.

// Exemple pour le mode visual
{
    "keys": ["ctrl+;"],
    "command": "vi_visual_comment_toggle",
    "context": [{"key": "vi_mode", "operand": "visual"}]
}

Gestion des Conflits de Mappages

Lorsque des mappages personnalisés entrent en conflit avec les mappages par défaut, Vintageous applique une priorité basée sur l'ordre de définition. Les solutions incluent :

  • Créer des fichiers de configuration dans le répertoire User pour une priorité plus élevée.
  • Utiliser la commande unmap pour désactiver des mappages non désirés.
  • Employer la méthode remove() de la classe Mappings pour ajuster les mappages dynamiquement.

Enregistrement et Utilisation des Macros

Bases de l'Enregistrement de Macros

Les macros dans Vintageous sont implémentées via le fichier vi/macros.py et gérées par la classe MacroRegisters. Le processus typique comprend :

  1. Démarrer l'enregistrement : En mode normal, appuyer sur q<registre> (par exemple, qb pour enregistrer dans le registre b).
  2. Effectuer les opérations : Exécuter les commandes d'édition à enregistrer.
  3. Arrêter l'enregistrement : Appuyer à nouveau sur q.
  4. Exécuter la macro : Utiliser @<registre> (par exemple, @b pour exécuter la macro du registre b).
  5. Répéter l'exécution : Appuyer sur @@ pour relancer la dernière macro.

Techniques Avancées avec les Macros

Exécution avec compteur : Préfixer l'exécution par un nombre pour répéter la macro, comme 5@b pour l'exécuter cinq fois.

Imbrication de macros : Enregistrer l'appel d'une macro dans une autre pour créer des séquences complexes.

Utilisation des registres : Les macros peuvent interagir avec les registres Vim. Par exemple, copier du texte dans un registre durant l'enregistrement avec "ay et le coller ensuite avec "ap.

Cas Pratiques d'Utilisation des Macros

Formatage de JSON : Automatiser la mise en forme de fichiers JSON.

// Étape 1 : Enregistrer une macro pour indenter le texte
// Commandes : gg=G (pour indenter tout le document)
// Étape 2 : Ajouter une opération de sauvegarde : :w<CR>
// Étape 3 : Mapper à un raccourci, par exemple :
{
    "keys": ["leader", "f"],
    "command": "vi_run_macro",
    "args": {"register": "c"},
    "context": [{"key": "vi_mode", "operand": "normal"}]
}

Renommage de variables multiples : Utiliser une macro pour appliquer des recherches et remplacements globaux.

// Enregistrer une macro avec : %s/ancien_nom/nouveau_nom/g<CR>
// Exécuter avec @d pour l'appliquer au fichier courant.

Configuration et Persistance des Données

Fichiers de Configuration pour les Mappages

Les mappages de clés sont définis dans plusieurs fichiers :

  • Default.sublime-keymap : mappages par défaut du plugin.
  • Fichiers dans le répertoire User : configurations personnalisées ayant une priorité supérieure.

Persistance des Macros et Registres

Par défaut, les macros sont stockées en mémoire et perdues après redémarrage de Sublime Text. Pour les conserver :

  • Définir manuellement des macros avec la commande :let @b='...' et les enregistrer dans un fichier d'initialisation comme .vintageousrc.
  • Utiliser l'API du plugin pour sauvegarder les macros sur le système de fichiers.

Résolution des Problèmes Courants

Mappages Non Effectifs

Vérifications recommandées :

  • Confirmer que le contexte du mappage (comme le mode) est correctement défini.
  • S'assurer qu'aucun autre plugin ne capture les mêmes raccourcis.
  • Utiliser la commande show_overlay pour inspecter les mappages actifs.

Anomalies lors de l'Exécution des Macros

Solutions :

  • Éviter les lignes relatives dans les macros (comme j ou k) ; préférer des numéros de ligne absolus.
  • Ajouter des délais si nécessaire avec la commande sleep pour les macros complexes.
  • Vérifier l'absence de changements de mode non intentionnels dans la macro.

Étiquettes: Vintageous Sublime Text vim key_mapping macros

Publié le 22 juillet à 18h06