Recherche…


Introduction

La mise à jour des mappages de clés Vim vous permet de résoudre deux types de problèmes: Réaffecter des raccourcis clavier aux lettres les plus mémorables ou accessibles, et créer des raccourcis clavier pour les fonctions qui n'en ont pas. Vous apprendrez ici les différentes façons de mapper les commandes clés et le contexte auquel elles s'appliquent (par exemple les modes vim)

Cartographie de base

carte Aperçu

Une séquence de touches peut être ré-associée à une autre séquence de touches à l'aide de l'une des variantes de la map .

Par exemple, la map va sortir du mode Insertion lorsque vous appuyez sur j k en séquence rapide:

:inoremap jk <Esc>

Opérateur de carte

Il existe plusieurs variantes de :map pour différents modes.

Commandes Modes
:map :noremap :unmap Mode normal, visuel et en attente d'opérateur
:map! , :noremap! , :unmap! Mode d'insertion et de ligne de commande
:nmap :nnoremap :nunmap Mode normal
:imap :inoremap :iunmap Mode d'insertion et de remplacement
:vmap :vnoremap :vunmap Mode visuel et sélection
:xmap :xnoremap :xunmap Mode visuel
:smap :snoremap :sunmap Sélectionnez le mode
:cmap :cnoremap :cunmap Mode ligne de commande
:omap :onoremap :ounmap Mode en attente de l'opérateur

En règle générale, vous devez utiliser les variantes :noremap ; Cela rend le mappage insensible aux remappages et aux récursions.

commande de carte

  • Vous pouvez afficher tous les mappages en utilisant :map (ou l'une des variantes ci-dessus).
  • Pour afficher le mappage actuel pour une séquence de touches spécifique, utilisez :map <key><key > est une séquence de clés
  • Les touches spéciales comme Esc sont mappées en utilisant une notation spéciale <> , comme <Esc> . Pour la liste complète des codes clés, voir http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes
  • :nmapclear - Effacer toutes les cartes en mode normal
  • :nunmap - Décompressez une carte en mode normal
  • Vous pouvez configurer le temps maximum entre les clés d'une séquence en modifiant les variables timeout et ttimeout

Exemples

  • imap jk <Esc> : taper jk en mode insertion vous ramènera au mode normal
  • nnoremap tt :tabnew<CR> : tt en mode normal ouvrira une nouvelle page d’onglet
  • nnoremap <Cj> <Cw>j : taper <Cj> en mode normal vous fera sauter à la fenêtre ci-dessous et à gauche
  • vmap <Cc> \cc : taper <Cc> en mode visuel exécutera \cc (commande NERDCommenter pour commenter la ligne). Comme cela repose sur un mappage de plugin, vous ne pouvez pas utiliser :vnoremap ici!

Lire plus ici

Combinaison de touches du leader de la carte

La clé principale peut être utilisée pour créer un mappage avec une liaison de clé pouvant être remplacée par l'utilisateur final.

Le leader est la touche \ par défaut. Pour le remplacer, l'utilisateur final doit exécuter :let g:mapleader='somekey(s)' avant de définir le mappage.

Dans un scénario classique, le mapleader est défini dans le .vimrc , et les plug-ins utilisent <Leader> dans la partie keybinding de leurs mappages pour les personnaliser.

Dans le plugin, nous définirions des mappages avec:

:nnoremap <Leader>a somecomplexaction

Ce mapperait l'action somecomplexaction à la \ + une combinaison de touches.

L'une action sans le leader ne change pas.

Il est également possible d'utiliser des <Plug>Mappings pour laisser plus d'espace pour personnaliser les raccourcis des plugins.

Illustration du mappage de base (raccourcis pratiques).

Dans la plupart des éditeurs de texte, le raccourci standard pour enregistrer le document en cours est Ctrl + S (ou Cmd + S sur macOS).

Vim n'a pas cette fonctionnalité par défaut mais cela peut être mappé pour faciliter les choses. L'ajout des lignes suivantes dans le fichier .vimrc fera l'affaire.

nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>

La commande nnoremap mappe Ctrl + s sur :w (commande le contenu actuel dans le fichier) alors que la commande inoremap mappe la commande Ctrl + S sur :w et revient au mode insertion ( <co> passe en mode normal pour une commande et retourne ensuite au mode d'insertion sans modifier la position du curseur que d'autres solutions comme <esc>:w<cr>a ne peuvent pas assurer).

De même,

" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing program/process.
" nnoremap <c-z> :u<CR>

" Thus, Ctrl+Z can be used in Insert mode
inoremap <c-z> <c-o>:u<CR>

" Enable Ctrl+C for copying selected text in Visual mode
vnoremap <c-c> <c-o>:y<CR>

PS: Cependant, il faut noter que Ctrl + S peut ne pas fonctionner comme prévu lors de l'utilisation de ssh (ou PuTTY). La solution à ce problème n'entre pas dans le cadre de ce document, mais peut être trouvée ici .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow