2009-02-28 5 views
29

Est-il possible pour le terminal pour détecter ⇧ Shift +Enter↵ ou Ctrl +Enter↵ pressions sur les touches? J'essaie de configurer vim pour faire des mappages de touches qui utilisent ces séquences, et bien qu'ils fonctionnent bien dans gvim, ils ne semblent fonctionner dans aucune console de terminal.Les terminaux peuvent-ils détecter <Shift-Enter> ou <Ctrl-Entrée>?

La chose curieuse est que bien Ctrl +Enter↵ est détectée dans vim, la cartographie Enter↵ à Esc cartes correctement, mais puis en appuyant sur Ctrl + Enter↵ se comporte comme Entrez!

+0

Utilisez-vous le vim ou le vi dans le terminal? –

Répondre

31

Certains terminaux envoient <NL> lorsque vous appuyez sur <C-Enter>. Cela équivaut à envoyer <C-J>.

Pour savoir ce que votre terminal ne avec <Shift-Enter>, <Ctrl-Enter> et <Enter>, allez à votre terminal, tapez <Ctrl-V> (similaire à la suggestion de Sykora pour vim), et tapez la séquence qui vous intéresse.

aide gnome-terminal, je reçois le texte suivant:

<Enter> : ^M 
<S-Enter> : ^M 
<C-Enter> : <NL> 

en regardant man ascii indique que ^M donne la séquence <CR>.

La réponse est que cela dépend du terminal, et il y a un moyen facile de vérifier.

+0

Mon terminal gnome sous Ubuntu sens et 'imap ' l'attrape. Merci! –

+0

'' fonctionne dans 'xterm' aussi, grâce – boh

+1

Je suis également en utilisant gnome-terminal, mais je reçois je reçois des résultats différents: ' :^M', ':^M',' :^m'. Est-ce qu'il y a un moyen de réparer ceci? –

15

Gvim exécute son propre gestionnaire pour la gestion des touches et peut ainsi récupérer toutes les combinaisons de touches. Vim dépend du terminal spécifique pour transmettre la touche particulière, de sorte que la manipulation des touches est seulement aussi bonne ou variée que le terminal. Une façon de savoir si vous pouvez faire ce que vous voulez faire est d'utiliser la touche pour savoir ce qui est inséré. par exemple Type:

:<C-V><C-Enter> 

à savoir le type réellement dans la combinaison que vous voulez appuyer après avoir tapé le contrôle-V combinaison. Après cela, faire la même chose pour entrer, à savoir

:<C-V><Enter> 

Si elles donnent le même code, le terminal interprète les deux combinaisons de touches que le même mot de code, et vous ne pouvez pas les lier sans déconner avec le terminal.

Dans mon terminal (urxvt), Ctrl-Entrée, Maj-Entrée et Entrée (en soi) produisent tous le caractère^M, ce qui signifie que je ne peux pas mapper un sans mapper l'autre. Il en va de même pour Control-Tab et Control-I, et Control-Space et Control- @

EDIT: Utilisez C-Q au lieu de C-V pour Windows.

+0

Il semble que dans les différents terminaux codes sont en fait générés: gvim: produit^M vim: produit^M gvim: produit vim: produit^@ Cependant, je Impossible de mapper^@ de manière appropriée, lors de l'utilisation: map^@ command –

+0

Quel terminal utilisez-vous? – sykora

+0

Utilisation de gnome-terminal. –

Questions connexes