Problème avec l'intercalage de l'onglet Ctrl dans Emacs en gnome-terminal

Je veux pouvoir returnner et remonter entre deux tampons dans Emacs de la même manière que je peux glisser entre les tabs dans d'autres éditeurs. La binding de la touche Ctrl + TAB suivante fonctionne bien dans XEmacs :

(defun buffer-shimmy () "Back to the previous buffer" (interactive) (let ((buff (car (buffer-list)))) (message "Previous buffer: %s" buff) (switch-to-buffer (other-buffer buff)) ) ) (global-set-key (kbd "<C-tab>") 'buffer-shimmy) ;; or (define-key global-map [(control tab)] 'buffer-shimmy) 

Cependant, cela ne fonctionne pas lorsque j'ouvre Emacs en utilisant "emacs -nw " (ou si j'utilise Emacs dans une session SSH).

Après avoir trouvé ce lien – je pense que ce que je veux n'est peut-être pas possible?

Apparemment, dans le terminal (c'est-à-dire en dehors du système Windowing), append un modificateur de contrôle au caractère ASCII pour 'TAB' est absurde. Alors que, si vous passez par un système de fenêtrage, Emacs peut vous voir en appuyant sur Ctrl + TAB comme <tab> avec un modificateur de contrôle, qui peut être représenté dans le file .emacs sous C-<tab> ou <C-tab> ou [(control tab)] .

Existe-t-il une solution de rechange qui corrige ce problème?

Logiciel de reference: Emacs version: 22.2.1 sur Ubuntu 9.04 à l'aide de gnome-terminal avec le profil par défaut.

One Solution collect form web for “Problème avec l'intercalage de l'onglet Ctrl dans Emacs en gnome-terminal”

Malheureusement, il n'y a pas de taille unique pour cette solution pour le client Emacs exécuté dans une window de terminal. Le problème se pose car le caractère <TAB> est défini comme CTRL-I , donc CTRL-<TAB> signifie CTRL-CTRL-I , ce qui n'est pas possible.

Lorsque Emacs s'exécute en mode fenêtré, il reçoit sa saisie directement à partir de pressions de touches. Lorsqu'il se déroule à l'intérieur d'un terminal (ou s'il rend plus clair les raisons pour lesquelles il ne fonctionne pas – sur une connection ssh), l'input provient des E / S du terminal. C'est le programme terminal qui lit les events keys matériels, et il génère le stream d'input (pas très précis, mais souligne le problème). Emacs lit le stream d'input et se convertit en events de pression de touche. Étant donné que Emacs ne peut pas accéder aux events keys matériels, il est lié par les ressortingctions de l'environnement terminal.

Pour certains programmes terminaux, il est possible de générer une séquence d'input personnalisée (comme lorsque vous appuyez sur F1 ) lorsque vous appuyez sur CTRL-<Tab> , qui peut être interprété par Emacs comme CTRL-<Tab> . Un extrait d'exemple pour le faire pour CTRL-<Home> est:

 (when (not window-system) ; Fixup missing console keys (define-key key-translation-map (kbd "M-[ 4 ^") (kbd "C-<end>")) (define-key key-translation-map (kbd "M-[ 1 ^") (kbd "C-<home>"))) 

Dans cet exemple, M-[ 1 ^ est la séquence d'input générée lorsque j'appuie sur CTRL-<Home> dans mon terminal.

Ce n'est pas une solution très portable (j'utilise principalement du mastic pour accéder à ma boîte linux depuis Windows, et cela ne l'autorise pas), donc votre kilométrage peut varier.

À la fin, j'ai décidé d'utiliser une autre binding de key sur mon .emacs, et je laisse tomber la memory musculaire de CTRL-<TAB> .

  • Qu'est-ce qui empêche la Route 53 d'Amazon de récupérer mes balises d'instance EC2?
  • Échec du chargement d'ioncube
  • Support Jetty 9 pour TLS_FALLBACK_SCSV
  • Ubuntu 11.04 et OpenLDAP - où est la configuration?
  • Comment get des statistics Postfix de seconde instance?
  • Ajout d'une input d'itinéraire à la table de routing linux
  • Ubuntu 14.04 PXE boot avec initrd (initramfs) kernel panic
  • Jenkins ne commence pas dans Ubuntu
  • problème sshd (peut-être ChallengeResponseAuthentication ou 'unknown key type' related)
  • Apache en cours d'exécution en tant que démon, alors il démarre automatiquement lorsque le server ubuntu démarre
  • Accès au port 8000 sur ubuntu dans vmware fusion
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.