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
Userpour une priorité plus élevée. - Utiliser la commande
unmappour désactiver des mappages non désirés. - Employer la méthode
remove()de la classeMappingspour 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 :
- Démarrer l'enregistrement : En mode normal, appuyer sur
q<registre>(par exemple,qbpour enregistrer dans le registre b). - Effectuer les opérations : Exécuter les commandes d'édition à enregistrer.
- Arrêter l'enregistrement : Appuyer à nouveau sur
q. - Exécuter la macro : Utiliser
@<registre>(par exemple,@bpour exécuter la macro du registre b). - 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_overlaypour inspecter les mappages actifs.
Anomalies lors de l'Exécution des Macros
Solutions :
- Éviter les lignes relatives dans les macros (comme
jouk) ; préférer des numéros de ligne absolus. - Ajouter des délais si nécessaire avec la commande
sleeppour les macros complexes. - Vérifier l'absence de changements de mode non intentionnels dans la macro.