web-dev-qa-db-fra.com

Cartographie gauche Touche Alt dans Vim?

Je suis capable de mapper la combinaison de la clé Right Alt+Left Arrow avec <a-left> ou par <m-left>. Mais je ne suis pas capable de mapper le Left Alt clé.

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

Edit :
[.____] juste à la clarté <a-left> veux dire Alt+Left Arrow.
[.____] La question importante ici est la différence entre Left Alt et Right Alt du point de vue des keymappings dans Vim?

12
Yogesh Arora

Si tu fais :help key-notation Dans Vim, vous verrez que les seuls modificateurs VIM reconnaissent sont décalage, contrôle, alt/méta (traité comme synonymes) et la touche de commande MAC. Vous pouvez facilement utiliser XModmap pour mapper votre clé d'altitude droite sur un nouveau modificateur que Vim reconnaît, mais aucun de ces modificateurs n'est actuellement inutilisé par vous. (Je ne sais pas s'il est possible d'obtenir des systèmes Linux pour représenter le modificateur de clé de commande MAC comme Vim le voit.) Il existe d'autres modificateurs que x reconnaît: mod4, hyper, etc., il semble que Vim vient de gagner " T Les voir ou au moins ne peuvent pas les lier.

Une autre option consiste à organiser la flèche gauche de gauche pour générer une séquence de clé spécifique, par exemple, ESC- [MYUNLEGARBAGEHERE. Ceci est certainement faisable, puis vous pourriez dire Vim de lier cela à toute action que vous aimez, qui est différente de celle de votre clé de gauche. L'inconvénient est que vous devez le faire pour chaque combinaison de clés à droite + individuellement. Mais si vous voulez juste faire cela pour quelques clés, c'est très réalisable.

Exactement comment vous implémentez cela dépendra de savoir si vous parlez d'utiliser 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 à droite, disons, mod3. Organisez-vous pour que cela soit exécuté une fois lorsque votre session X commence. 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 clés dans un fichier de type Xresources. Vous pouvez le faire dans ~/.config/xresources; Je le fais dans ~/.config/appl-par défaut/urxvt. Je mettrais une ligne comme celle-ci dans ce fichier (la syntaxe exacte est sensible à quel fichier vous l'avez mis):

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

    Démarrez maintenant un nouveau terminal, tapez Ctrl-V puis tapez juste à droite + à gauche. Vous devriez voir à la ligne de commande les personnages ^ [[<ralt-gauche>. Est-ce que ça marche? Bon.

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

    set t_Ff=^[<RAlt-Left>
    

Le '^ [' Voici un seul caractère d'échappement. Chacun des autres personnages ('<', 'R', 'A', etc.) sont eux-mêmes. Utilisez le préfixe "littéral" de Vim, suivi d'une évasion, pour entrer "^ ['(J'oublie quelle est la clé" littérale "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 termcap Dans Vim Pour voir quelles entrées de terminal sont attribué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 ces prochains:

    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 inactif pour fonctionner beaucoup plus de manière fiable.

J'ai fait beaucoup d'hypothèses ici: que vous utilisez Linux, X, etc. Si vous utilisez un programme terminal différent de celui de l'URXVT, il peut ne pas fournir ou non des techniques de clavier suffisamment puissantes pour faire ce que j'ai décrit. Si vous choisissez moins de clés exotiques, vous pourrez toujours faire quelque chose comme je l'ai décrit ici. Par exemple, vous pouvez organiser pour que RALT-GAUCHE soit lié à F21, puis aller de là. Faites-nous savoir quelles sont vos exigences.

14
dubiousjim