Mappages Gnome-terminal + Vim et Ctrl-Shift

11

Est-il possible de cartographier une séquence avec Ctrl- Shiftdans Gnome Terminal?

J'essaie d'ajouter les mappages

  • map <C-S-[> gT
  • map <C-S-]> gt

et ça ne marche pas. Comment faire ça?

D'une certaine manière, j'ai cartographié <C-S-]>, mais il s'est avéré que non <C-S-]>, mais <C-]>il semble donc qu'il ne reconnaisse pas Shift dans cette séquence. C'est mal configuré ou c'est la faute de gnome-terminal?

Outre. La cartographie <C-[>, après avoir appuyé, semble que vim attend. Je suppose que c'est le timeout de mappage, mais comment se débarrasser de ce timeout lorsque j'appuie précisément <C-[>et que je ne veux appuyer sur rien d'autre?

Je viens de commencer à apprendre vim, donc désolé s'il y a quelque chose de mal dans ces mappages.

Simon
la source

Réponses:

8

Je pense que le problème ici est que vous essayez d'obtenir vim, qui s'attend à s'exécuter dans un terminal, pour reconnaître une séquence CTRL-SHIFT. Bien qu'il soit possible pour X de reconnaître de telles combinaisons, les applications qui s'exécutent dans un terminal (ou, de nos jours, un émulateur de terminal) ne le peuvent pas. En effet, historiquement, les terminaux ne pouvaient envoyer et recevoir que des séquences de données ASCII à sept ou huit bits via une connexion série (bien que cela puisse inclure des "séquences d'échappement" qui positionnent le curseur, font défiler ou suppriment des lignes, changent de couleur et autres informations utiles). effets).

Il y a 32 "codes de contrôle" dans le jeu de caractères ASCII, y compris les CTRL-A familiers à CTRL-Z. Mais il n'y a pas de codes ASCII correspondants pour "CTRL-SHIFT" de A à Z. Maintenant, gnome-terminal lui-même peut reconnaître ces codes (CTRL-SHIFT-V, par exemple, va coller du texte du presse-papiers), mais vim ne sera pas pouvoir y accéder directement.

Bien sûr, il peut être possible (je ne sais pas) de configurer un émulateur de terminal pour convertir les pressions de touches CTRL-SHIFT en une séquence d'échappement qui peut ensuite être reconnue par un mappage vim.

=======

MISE À JOUR

Vous pourriez être intéressé par gvim, qui est une version graphique de vim qui fonctionne comme un programme X plutôt que comme un programme terminal. Peut-être que gvim pourra comprendre les codes CTRL-SHIFT?

Bartleby le Scrivener
la source
4

Semble être un problème avec le terminal GNOME ne permettant pas certaines combinaisons avec la Ctrlclé. La recherche en ligne en montre de nombreux cas.

Au cas où vous ne le sauriez pas, Ctrl+ page up/ fait page downdéfiler les onglets.

stschn
la source
3

Comme Bartleby l'a souligné, il s'agit d'une restriction terminale, car vi considère que les codes clés sont les mêmes.

Pour les terminaux tels que xtermvous pouvez changer cela. Pour gnome-terminal lequel ignore les paramètres des ressources X, je ne sais pas comment procéder:

Cette question SO couvre le même sujet, et cet exemple montre cela en cours d'utilisation pour mapper plusieurs clés dans le .Xresourcesfichier. Par exemple:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

Maintenant , nous avons différentes séquences de touches entrée en vi pour Ctrlavs CtrlShifta, Ctrlbvs CtrlShiftb, Ctrlfvs CtrlShiftf.

Nous pouvons maintenant les cartographier différemment dans ~/.vimrc:

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>
cfi
la source
La question initiale portait sur gnome-terminal, alors que votre réponse fait référence xterm.
egmont
@egmont: Bon point, et un oubli de mon côté. Selon cette réponse, les .Xresourcessont ignorés par gnome-terminal. C'est regrettable. Réponse mise à jour.
cfi
Légèrement reformulée / transposée cette réponse en tant que paire de questions / réponses à SuperUser , car je devrais probablement la supprimer ici car elle ne s'applique pas au terminal du demandeur.
cfi
1

Il semble que vous n'ayez qu'à désactiver tous les raccourcis clavier dans gnome-terminal.

Être invisible
la source
2
Pourquoi la désactivation des raccourcis clavier est-elle utile?
Eliah Kagan
Cela ne semble pas du tout aider, d'après mon expérience.
Elliot Foster
1

Dans gnome-terminalles séquences d'échappement générées par les clés ne sont pas configurables. Pour de nombreuses touches Ctrl+ keyet Shift+ Ctrl+ keygénèrent des séquences différentes; malheureusement pour [et ]ils ne le font pas, vous ne pouvez donc pas les distinguer.

egmont
la source