Mapper la touche Alt gauche dans Vim?

12

Je peux mapper la combinaison de touches Right Alt+ Left Arrowavec <a-left>ou par <m-left>. Mais je ne suis pas en mesure de mapper la Left Altclé.

Y-a-t-il un moyen de faire ça?

Edit:
Juste pour plus de clarté <a-left>signifie Alt+ Left Arrow.
La question importante ici est quelle est la différence entre Left Altet Right Altdu point de vue des mappages de touches dans Vim?

Yogesh Arora
la source

Réponses:

14

Si vous le faites :help key-notationdans vim, vous verrez que les seuls modificateurs reconnus par Vim sont shift, control, alt / meta (traités comme synonymes) et la touche de commande Mac. Vous pouvez facilement utiliser xmodmap pour mapper votre touche alt droite sur un nouveau modificateur que Vim reconnaît, mais peut-être aucun de ces modificateurs n'est actuellement utilisé par vous. (Je ne sais pas s'il est possible d'obtenir des systèmes Linux pour représenter le modificateur de touche de commande Mac tel que Vim le voit.) Il existe d'autres modificateurs que X reconnaît: Mod4, Hyper, etc., mais il semble que Vim vient de gagner '' t les voir ou du moins ne peut pas les lier.

Une autre option consiste à organiser la flèche droite-flèche gauche pour générer une séquence de touches spécifique, par exemple, Esc- [MyUniqueGarbageHere. C'est certainement faisable, et alors vous pourriez dire à Vim de lier cela à l'action que vous voulez, qui est différente de celle de votre touche alt gauche. L'inconvénient est que vous devez le faire pour chaque combinaison RightAlt + Key individuellement. Mais si vous voulez simplement le faire pour quelques touches, c'est très faisable.

La façon exacte dont vous l'implémenterez dépendra de l'utilisation de Vim dans X ou dans une console Linux, ou dans un autre environnement. Je suppose que vous parlez de l'utiliser dans X.

  1. Utilisez xmodmap pour lier RightAlt à, disons, Mod3. Arrangez-vous pour que cela soit exécuté une fois au démarrage de votre session X. Certaines distributions ont déjà un fichier / etc / X11 / xinit / xinitrc qui chargera des fichiers à des emplacements spécifiques contenant des commandes xmodmap.

    xmodmap -e "remove Mod1 = Alt_R" -e "add Mod3 = Alt_R"
    
  2. J'utilise le terminal urxvt. Il permet de définir des raccourcis clavier dans un fichier de type Xresources. Vous pouvez le faire dans ~ / .config / Xresources; Je le fais dans ~ / .config / app-defaults / URxvt. Je mettrais une ligne comme celle-ci dans ce fichier (la syntaxe exacte est sensible au fichier dans lequel vous l'avez placé):

    URxvt.keysym.Mod3-Left:    \033<RAlt-Left>
    

    Maintenant, démarrez un nouveau terminal, tapez ctrl-V puis tapez RightAlt + Left. Vous devriez voir sur la ligne de commande les caractères ^ [[<RAlt-Left>. Est-ce que ça marche? Bien.

  3. Dans votre ~ / .vimrc, mettez ceci:

    set t_Ff=^[<RAlt-Left>
    

Le '^ [' est ici un seul caractère d'échappement. Chacun des autres personnages ('<', 'R', 'A', etc.) est lui-même. Utilisez le préfixe de clé "littéral" de vim, suivi d'un échappement, pour entrer le '^ [' (j'oublie ce que la clé "littérale" est par défaut --- aussi ctrl-V, peut-être?) T_Ff est juste une entrée de terminal inutilisée . Un autre est t_Fg. Vous pouvez utiliser :set termcapdans vim pour voir quelles entrées de terminal sont affectées, et utilisez simplement t_XX pour certains XX qui ne sont pas utilisés. Suivez la ligne .vimrc présentée ci-dessus avec les suivantes:

    map <t_Ff> whatever-vim-keys-you-want-it-mapped-to
    map! <t_Ff> whatever-vim-keys-you-want-it-mapped-to

Il est également possible de faire directement:

    map ^[<RAlt-Left> whatever-vim-keys-you-want-it-mapped-to

Cependant, j'ai trouvé la technique qui utilise une entrée de terminal inactive pour fonctionner de manière beaucoup plus fiable.

J'ai fait beaucoup d'hypothèses ici: que vous utilisez Linux, X, etc. Si vous utilisez un programme de terminal différent de urxvt, il peut ou non fournir des techniques de liaison de touches suffisamment puissantes pour faire ce que j'ai décrit. Si vous choisissez des touches moins exotiques, vous pourrez peut-être faire quelque chose comme je l'ai décrit ici. Par exemple, vous pouvez arranger RAlt-Left pour être lié à F21, puis continuer à partir de là. Faites-nous part de vos besoins.

dubiousjim
la source
Est-ce que cela s'applique également à gvim?
Glyphe
J'ai trouvé cela particulièrement utile. J'utilise lxterminal et je souhaite mapper ma touche alt dans vim. Dans le terminal, lorsque j'ai tapé Ctrl-V puis le combo de touches souhaité (Alt-T, par exemple), il a craché ^ [t. J'ai utilisé cela dans mon .vimrc au lieu de <At> pour effectuer le mappage (^ [étant bien sûr le caractère d'échappement unique) et il s'est parfaitement déroulé. (^ [^ T lie également correctement Ctrl + Alt + T)
elynnaie