Dans ce guide complet, je vais vous expliquer comment mapper les clés dans Vim pour automatiser les opérations. De la création d'un mappage de touches de base au mappage de touches avancé, en passant par les processus permettant de les rendre permanents et de les supprimer.
- Syntaxe
- Arguments spéciaux de Vim
- Création d'un clavier de base
- Liste des mappages de touches
- Rendre les mappages de touches permanents
- Éviter la récursion
- Création de claviers spécifiques au mode
- Comment mapper les événements de la souris
- Comment cartographier avec la clé Leader dans Vim
- Comment mapper une fonction Vimscript
- Comment mapper des commandes externes dans Vim
- Comment supprimer un keymap dans Vim
- Aide-mémoire pour le mappage des clés Vim
- Conclusion
Syntaxe
Pour mapper la clé dans Vim, la syntaxe suivante est utilisée :
Dans la syntaxe ci-dessus :
|
nmap, imap, vmap, xmap, cmap ou omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*Dans la syntaxe ci-dessus, la section Arguments spéciaux de VimLes arguments spéciaux Vim sont des balises utilisées pour donner des fonctionnalités supplémentaires aux claviers. Ces arguments apparaissent après la commande :map et avant {rhs} et {lhs}. Par exemple, pour rendre un tampon de carte spécifique, utilisez l'argument spécial de la manière suivante : :carte < tampon > < Californie > ggVG
Les notations de touches spéciales Vim sont mentionnées dans l'image suivante.
Par exemple, si vous souhaitez utiliser la touche espace dans le mappage des touches, la notation Création d'un keymap de base dans VimComprenons le mappage des clés Vim avec un exemple de base. Je souhaite mapper la commande Sélectionner toutes les lignes ( ggVG ) à ctrl+a clés. Pour mapper les touches ctrl+a, je vais exécuter la commande suivante dans Vim. :carte < Californie > ggVG Ici, De même, pour mapper la fonctionnalité de basculement du numéro de ligne avec le F1 utilisation clé: :carte < F1 > : définir le numéro !Désormais, lorsque vous appuyez sur la touche F1, le numéro de ligne sera activé et une nouvelle pression le désactivera. Notez que cette méthode mappera uniquement les clés dans le tampon actuel et sera supprimée à la fermeture du tampon. Liste des mappages de touchesPour répertorier tous les mappages de touches des modes normal, visuel et en attente d'opérateur, utilisez la commande :map. :cartePour répertorier le mappage des touches de insérer et ligne de commande modes, utilisez le :map! Commande. :carte !Pour répertorier le mappage des touches d'un mode spécifique, tapez simplement la lettre initiale du mode avant le mot-clé map.
De plus, pour lister toutes les cartes y compris les cartes du plugin avec chemins, utilisez :carte détaillée commande. :carte détaillée Pour une clé spécifique, mentionnez simplement la clé dans la commande ( :carte verbeuse Rendre les mappages de touches permanentsLes mappages de touches mentionnés dans la section ci-dessus mapperont uniquement les touches du tampon actuel. Pour rendre les mappages de touches Vim permanents, les mappages doivent être placés dans le fichier vimrc.
Notez qu'en plaçant le keymap dans le vimrc fichier, n’ajoutez pas de deux-points (:) avant le carte commande. Après avoir placé le keymap dans le vimrc fichier, enregistrez-le et quittez-le en utilisant la commande :wq ou en utilisant les touches maj+zz. Les keymaps placées dans le vimrc Le fichier sera global et pourra être utilisé dans toutes les sessions Vim. Cependant, certaines configurations de clavier peuvent être temporairement désactivées si elles affectent le travail dans la session en cours, voir la section Comment supprimer une configuration de clavier dans Vim ci-dessous. Le vimrc est le fichier de paramètres de Vim qui contient diverses commandes et paramètres. Il est présent dans le /usr/share/vim/ répertoire sur macOS et /etc/vim sous Linux. Il est important de noter que le vimrc les fichiers dans les répertoires mentionnés sont des fichiers spécifiques au système. Vous pouvez également modifier ces fichiers pour le mappage des touches, mais je recommanderais de créer un fichier spécifique à l'utilisateur. vimrc fichier dans le répertoire personnel. Éviter la récursionAvant d'aller de l'avant, il est important de se renseigner sur la récursivité dans le mappage des clés Vim. Ses inconvénients et comment les éviter. Cela peut être compris à l’aide d’un exemple. :carte jj 3jddDans l'exemple ci-dessus, j'ai cartographié le jj pour descendre de 3 lignes et supprimer la ligne sous le curseur. Maintenant, quand j'appuie sur le jj , il va essayer d'exécuter la carte 3jdd . Vim interprétera le jj commande sous forme de carte et exécutez la carte à plusieurs reprises, comme indiqué dans l’image suivante.
Note : La récursion peut geler l'éditeur Vim. Pour le débloquer, appuyez sur ctrl+c clés. Pour éviter la récursion, remplacez le carte mot-clé avec noremap , où ' plus ' moyens non récursif . je remplacerai le carte mot-clé avec noremap pour corriger la récursion dans le keymap ci-dessus. :noremap jj 3jddJe recommanderai d'utiliser noremap au lieu de carte pour éviter de créer accidentellement un mappage récursif. Création de claviers spécifiques au modeVim a rendu le mappage des touches si polyvalent que même le mappage des touches d'un mode spécifique peut être créé assez facilement. Par exemple, si vous avez créé une configuration de clavier pour le mode insertion à l'aide d'un F1 clé, alors vous pouvez mapper la même chose F1 clé dans un autre mode pour une opération entièrement nouvelle. Dans l'exemple suivant, j'ai mappé le F1 touche pour supprimer 3 lignes dans le normale mode et tirez 3 lignes dans le insérer mode. :nmap < F1 > 3jd:imap < F1 > < C-t > La première carte supprime trois lignes en mode normal lorsque vous appuyez sur la touche F1, tandis que la deuxième carte ajoute une indentation dans la ligne actuelle en mode insertion en utilisant la même touche. Voyons maintenant le mappage dans chaque mode. Mappage en mode normalPour appliquer une carte en mode normal, utilisez uniquement nmap mot-clé. Par exemple, pour copier toutes les lignes d'un fichier en utilisant ctrl+c clés, j'utiliserai la commande suivante. :nmap < C-c > ggVGyComme indiqué précédemment, il est recommandé d'utiliser une méthode non récursive pour mapper une clé. Par conséquent, je remplacerai le nmap avec nnoremap mot-clé. :nnoremap < C-c > ggVGyPlacez-le sans deux-points (:) dans le vimrc fichier pour en faire un keymap permanent. j'utiliserai noremap à la place du carte dans l'exemple suivant. Mappage du mode d'insertionPour mapper les touches pour le mode insertion, utilisez simplement je au lieu de n . Par exemple, en mode insertion, ctrl+p et ctrl+n les clés sont utilisées pour compléter automatiquement le mot en fonction respectivement de la correspondance vers l'arrière et vers l'avant. Pour cartographier le ctrl+p touches avec la touche de tabulation, j'utiliserai la commande suivante. :inoremap < Languette > < Cp >Plus important encore, si vous souhaitez cartographier mode d'attente de l'opérateur commandes dans le mode insertion , alors vous devez insérer le <Échap> sur le côté droit pour quitter le mode insertion afin d'exécuter ces commandes. Par exemple, dans le plan de clavier suivant, je souhaite supprimer 3 lignes à l'aide du ctrl+x et entrez à nouveau dans le mode insertion. :inoremap < Cx > 3ddiMaintenant, quand j'appuie sur le ctrl+x touches, il imprimera le 3ddi commande au lieu de l’exécuter.
Pour résoudre ce problème, j'insérerai le <Échap> avant le 3ddi commande. :inoremap < Cx > < Échap > 3ddiMaintenant, la commande exécutera le maintien en mode insertion. De nombreux mini-ordinateurs portables n'ont pas le Échap clé, ce qui est important pour quitter le mode actuel. Ainsi, pour cartographier le Échap pour quitter le mode insertion, le mappage des touches peut être utilisé. Dans l'exemple suivant, j'utilise ex touches pour quitter le mode normal. :inoremap ex < Échap >Lorsque vous appuyez rapidement sur le ex touches, le mode insertion sera quitté, entrant ainsi dans le mode normal. Cartographie du mode visuelLe mode visuel est un mode très important pour sélectionner du texte dans l'éditeur Vim. Outre la sélection de base, le mode visuel comporte d'autres modes différents tels que les modes ligne visuelle et bloc visuel. En mode visuel, tilde (~) est utilisé pour basculer le cas. Pour utiliser le tilde (~), il faut appuyer sur les deux touches (maj+~) . Dans l'exemple suivant, je mappe la touche c dans mode visuel pour sélectionner un mot sous le curseur et changer sa casse. :vnoremap c iw~Maintenant, appuyez sur v pour entrer en mode visuel et appuyez sur la touche c pour basculer le mot sous le curseur, comme indiqué dans le GIF suivant.
Mappage du mode ligne de commandeDe nombreuses commandes essentielles de Vim fonctionnent uniquement en mode ligne de commande. Par exemple, pour enregistrer le fichier :Dans la commande est utilisée, de la même manière, pour enregistrer et quitter :wq la commande est utilisée. Tous les onglets et opérations de fractionnement sont également effectués en mode ligne de commande. Par exemple, pour créer un nouvel onglet, le : subordonné la commande est utilisée. Eh bien, pour créer rapidement un onglet, ctrl+t les clés suffisent. :cnoremap < C-t > sujet < CR >Maintenant, appuyez sur les deux points (:) pour entrer en mode ligne de commande, puis ctrl+t pour ouvrir un nouvel onglet ; c'est beaucoup plus rapide que de taper l'intégralité sujet commande et Retour clé.
Création de commandes personnalisées Vim Maintenant, entrez en mode commande et exécutez le :Moncmd commande. Mappage du mode en attente de l'opérateurLe mode opérateur en attente est un mode dans lequel Vim attend la commande de mouvement après avoir appuyé sur la touche opérateur. Les opérateurs courants sont y, d et c. Par exemple, pour supprimer la ligne courante et les 3 lignes suivantes, vous utiliserez l'opérateur d avec 3j mouvement (d3j). Vous ne pouvez pas appuyer simultanément sur ces touches pour réaliser l'opération souhaitée. Le mode est généralement utilisé pour cartographier les mouvements. Cartographions un mouvement qui sélectionnera la ligne actuelle et les 3 lignes qui la suivent. :onoremap < F2 > 3jMaintenant, pour extraire la ligne actuelle et les 3 lignes qui la suivent, utilisez le leF2 touches, de la même manière, les d opérateur peut également être appliqué. Une autre chose importante à garder à l’esprit est que si vous ajoutez un décompte au mouvement cartographié mentionné ci-dessus, disons 2 Comment mapper les événements de la sourisBien que Vim soit un éditeur de texte centré sur le clavier entièrement personnalisable, la disponibilité de la fonctionnalité de la souris le rend encore meilleur. Outre les touches normales du clavier, tous les événements de la souris peuvent également être mappés dans Vim. Par exemple, si vous souhaitez mapper le double-clic droit et le double-clic gauche pour faire avancer et reculer respectivement les marques, utilisez le mappage suivant. :noremap < 2 -Bouton droit de la souris > ] `:noremap < 2 -GaucheSouris > [ ` D'autres événements de souris pouvant être mappés sont indiqués dans le tableau suivant.
Comment cartographier avec la clé Leader dans VimLe mappage Vim est incomplet sans la clé leader. La clé leader est la clé par défaut qui peut être utilisée pour mapper les clés, même si elles sont mappées pour effectuer d'autres tâches. Par exemple, si vous avez mappé le d clé pour supprimer toutes les lignes, nous pouvons alors mapper la même clé pour supprimer seulement 5 lignes en utilisant la touche leader. Pour ceux qui ne sont pas familiers avec la clé du leader Vim. Il s'agit d'une clé précédée d'une autre clé ou d'un ensemble de clés pour mapper des commandes ou des opérations. La clé de repère par défaut de Vim est une barre oblique inverse (\), mais elle est personnalisable. Par exemple, le jj La commande est utilisée pour supprimer la ligne sous le curseur. Si vous souhaitez cartographier le jj commande pour supprimer toutes les lignes des fichiers, vous pouvez alors utiliser la touche leader. :noremap < Chef > jj ggVGdDésormais, chaque fois que vous appuyez sur le \dd touche, toutes les lignes du fichier seront supprimées. Vous pouvez attribuer la clé de leader Vim comme clé de contrôle sous Windows ou comme clé de commande sous macOS. Comment mapper une fonction VimscriptL'éditeur Vim ne se limite pas aux commandes ou aux opérations. Il existe tout un langage de programmation autour de Vim pour créer des fonctionnalités personnalisées appelées Vimscript. Vous pouvez facilement créer un script ou une fonction et le mapper à une clé. Par exemple, créons une fonction qui activera des paramètres tels que le numéro de ligne, la fonctionnalité de la souris et la largeur du texte. fonction Mes paramètres ( )ensemble nombre ensemble souris =un ensemble largeur du texte = 80 fonction finale Placez cette fonction dans le fichier vimrc. Cartographions cette fonction avec le leader et les touches s. j'utiliserai :noremap < Chef > s : appeler Mes paramètres ( ) < CR >Désormais, chaque fois que vous appuyez sur le \s touches, la fonction sera appelée et toute fonctionnalité à l’intérieur de la fonction sera exécutée. Note : La première lettre du nom de la fonction doit toujours être en majuscule lors de la création d'une fonction personnalisée dans Vim. Comment mapper des commandes externes dans VimLes commandes externes peuvent également être mappées dans Vim. Les commandes externes font référence aux commandes Linux ou Unix. Par exemple, si vous souhaitez mapper le réseau externe trier commande pour trier toutes les lignes du tampon actuel selon le F1 clé, utilisez la commande suivante. :noremap < F1 > : % ! trier < CR >De la même manière, si vous écrivez un fichier script et le rendez exécutable sans quitter la session Vim, vous pouvez utiliser le chmod commande en interne. Par exemple, pour rendre le fichier actuel exécutable, vous pouvez exécuter la commande :!chmod +x % dans Vim. Si vous effectuez fréquemment cette tâche, associez-y simplement une clé. :noremap < F1 > : ! chmod +x %Dans Vim, n'importe quelle commande externe peut être utilisée avec un signe d'exclamation (!). Comment supprimer un keymap dans VimPour supprimer les mappages de touches dans Vim, identifiez d'abord l'endroit où ils sont définis. Comme indiqué précédemment, les mappages de touches peuvent être locaux dans un tampon et permanents. Si le mappage de touches est permanent et placé dans le fichier vimrc, le simple fait de les supprimer du fichier supprimera le mappage des touches. Si le mappage est effectué dans le tampon actuel, alors ils peuvent être supprimés à l'aide du :démapper ou :démapper ! commandes.
Par exemple, pour supprimer le
Pour supprimer toutes les cartes du tampon actuel, utilisez le :mapclear commande. :mapclearLa commande ci-dessus effacera toutes les configurations de touches du mode normal, visuel, sélection ou opérateur en attente. Pour effacer toutes les configurations de clavier des modes insertion et ligne de commande, utilisez : :mapclear ! Notez que les commandes Vim par défaut ne peuvent pas être claires, mais elles peuvent être désactivées à l'aide du :démapper commande avec Le dd ne sera plus fonctionnel dans le buffer actuel. En utilisant cette méthode, n’importe quel keymap peut être désactivé pour la session en cours. Aide-mémoire pour le mappage des clés VimL'image suivante fournit une liste de toutes les commandes et de leurs modes spécifiques à titre de référence.
ConclusionLe mappage des touches Vim est un moyen pratique d'automatiser vos tâches, les liaisons de touches fréquemment utilisées, les commandes et autres opérations. Il s'agit d'un sujet diversifié et dans ce guide, j'ai couvert tous les principaux aspects liés au mappage de clés dans Vim. De la syntaxe générale à la création d'un keymap de base et jusqu'au mappage des fonctions Vimscript avancées et des commandes externes. Pour en savoir plus sur le mappage des clés Vim, utilisez le : aide au mappage des touches commande dans Vim. |