108 votes

Comment mapper Ctrl+A et Ctrl+Shift+A différemment ?

Dans un terminal, on ne peut pas distinguer Ctrl + A y Ctrl + Shift + A car ils émettent tous les deux le même code clé, je comprends donc pourquoi Vim ne peut pas le faire. Mais gVim, étant une application X, peut différencier Ctrl + A y Ctrl + Shift + A . Existe-t-il un moyen de cartographier ces deux éléments différemment ?

Pour commencer, j'aimerais faire quelque chose comme ce qui suit : Faire en sorte que "coller depuis le presse-papier" fonctionne comme le terminal Gnome, tout en conservant la fonction "coller depuis le presse-papier". Ctrl + V au mode visuel.

:nmap <C-S-V> "+gP

1voto

Javier Points 33134

Comme vous l'avez noté, vous obtenez le même code clé. La seule façon de les distinguer est donc de vérifier l'état de l'élément Shift dans votre fonction de gestion des événements. Bien entendu, si vous avez un délai de plus de 0,5 seconde entre l'appui sur la touche et le traitement, vous manquerez certaines frappes.

0voto

danijar Points 4522

La plupart des émulateurs de terminaux traitent par défaut la combinaison contrôle plus majuscule comme un simple contrôle. Au lieu de cela, vous associez généralement ces combinaisons de touches à une séquence d'échappement que vous écoutez dans l'application du terminal.

Étape 1 : Configurez votre émulateur de terminal pour qu'il se lie Ctrl + Shift + A à la séquence Esc , A .

L'émulateur de terminal est le programme qui affiche la fenêtre réelle du terminal. Lorsque vous accédez à un serveur via SSH, l'émulateur de terminal est un programme sur votre machine locale. La liaison des clés fonctionne différemment selon les émulateurs de terminal. Par exemple :

  • Pour l'urxvt, ajouter URxvt.keysym.Control-Shift-A: \033A à la ~/.Xresources et le recharger avec xrdb ~/.Xresources .
  • Pour iTerm2, ouvrez Préférences -> Clés, ajoutez une entrée, et liez Ctrl + Shift + A jusqu'à l'action "Envoyer une séquence d'échappement" et tapez A dans le champ ci-dessous.

Étape 2 : Relier Esc , A à une commande dans Vim.

Ajoutez le mappage des clés à votre ~/.vimrc et la recharger avec :source ~/.vimrc :

nnoremap <esc>a your command here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X