Je suis converti de Visual Studio vers EMACS pour la plupart de mon développement (principalement en raison de la modification des langages de programmation). Cependant, il y a une caractéristique cool de Visual Studio que je manquais vraiment: Ctrl kbd> - onglet kbd> entre "tampons". P>
Le ctrl kbd> - onglet kbd> que dans Visual Studio n'est pas le même que C KBD> - x kbd> b kbd> dans EMACS. Donc, ce n'est pas simplement une question de cartographie du clavier. Voici les caractéristiques de My Ideal CTRL KBD> - onglet KBD>: p>
J'ai vu des plugins Emacs qui essaient de simuler ce comportement, mais le n ° 4 est le plus difficile. Il semble que Emacs ne soit pas en mesure de détecter lorsque la touche CTRL KBD> est publiée. Au lieu de cela, le code attend que l'utilisateur soit dans le tampon pendant un certain temps ou attend qu'un tampon change..et, puis le tampon est ajouté à la bague. Il est assez différent de me frustrer vraiment et n'utilisez jamais mon Ctrl kbd> - onglet kbd>. Pour le moment, je viens de traiter c kbd> - x kbd> b kbd>. IDO-MODE fait C kbd> - x kbd> b kbd> plus tolérable, mais je rêve toujours d'un jour quand je peux Ctrl kbd> - onglet kbd> dans emacs. p>
a quelque part que quelqu'un a trouvé un moyen de configurer ctrl kbd> - onglet kbd> dans emacs pour fonctionner comme Visual Studio? P>
5 Réponses :
Je pense que c'est proche de ce que vous voulez. Comme vous l'avez mentionné, EMACS ne reçoit pas d'événements pour la clé de contrôle, vous ne pouvez donc pas vraiment obtenir la fonctionnalité souhaitée. Cependant, cela n'enregistrera pas le commutateur tampon avant de faire quelque chose d'autre que d'appuyer sur c-onglet kbd> (c'est-à-dire faire défiler, tapez quelque chose, cliquez sur la souris, utilisez une commande mx ... kbd >): (global-set-key (kbd "<C-tab>") 'my-switch-buffer)
(defun my-switch-buffer ()
"Switch buffers, but don't record the change until the last one."
(interactive)
(let ((blist (copy-sequence (buffer-list)))
current
(key-for-this (this-command-keys))
(key-for-this-string (format-kbd-macro (this-command-keys)))
done)
(while (not done)
(setq current (car blist))
(setq blist (append (cdr blist) (list current)))
(when (and (not (get-buffer-window current))
(not (minibufferp current)))
(switch-to-buffer current t)
(message "Type %s to continue cycling" key-for-this-string)
(when (setq done (not (equal key-for-this (make-vector 1 (read-event)))))
(switch-to-buffer current)
(clear-this-command-keys t)
(setq unread-command-events (list last-input-event)))))))
"Emacs ne reçoit pas d'événements pour la clé de contrôle" :( c'est ce que j'avais peur. Je préfère ne pas avoir besoin de taper des tampons, je veux juste les lire et revenir (par exemple, la documentation de l'API). Est-ce qu'il y a Quelque chose à «astuce» Emacs dans la vue de la clé Ctrl a été libéré?
@ User1 Vous pouvez réellement faire autre chose que c-onglet code>, comme cliquez sur la souris, faites défiler le haut / bas, la recherche, quoi que ce soit. Je vais mettre à jour la réponse pour montrer ceci.
Si vous utilisez GNU EMACS 22.1 ou plus de publications récentes, Cette question d'hier semble très similaire à ce que vous voulez réaliser, sauf que le Question Talks sur NotePad ++ au lieu de Visual Studio. P> \ CX MX Next-tampon code> et \ cx MX Précédent-tampon Code>. Cette page sur Emacswiki a un lien vers C-Tab CODE> STYLE WINDOWS cyclisme tampon. La page explique également comment apporter ce comportement sur les versions plus anciennes d'Emacsen. P>
Oui, (touche globale-clé (kbd "
Je cherchais exactement le comportement que vous décrivez et rencontré
Le package iflipb: http://www.emacswiki.org/emacs/iflipb et lié-le à c kbd> - onglet kbd>, c kbd> - s kbd> - onglet kbd>. p>.
Malheureusement, il ne redémarre pas le cyclisme, que ce soit après la libération de la touche CTRL KBD>, de sorte qu'à cet égard est identique à la mémoire tampon My-Switch dans la réponse ci-dessus. Toute nouvelle idée de cette question est très appréciée. P>
J'aime aussi le comportement de cyclisme et de basculement de iflipb, c'est beaucoup comme le comportement de Windows Alt-Tab. Cependant, comme indiqué précédemment, EMACS ne permet pas de remarquer facilement lorsque vous relâchez la clé de contrôle. Cela permet de basculer entre les deux tampons supérieurs imparfaites: si vous appuyez sur C-Tab (et relâchez-vous), puis sur C-Tab (et relâchez), vous n'avez pas été basculé entre les deux premiers. Au lieu de cela, Iflipb ne fait que marcher plus loin dans la liste des tampons. Mais si vous exécutez une autre commande EMACS entre les deux événements C-onglet, Iflipb reconnaît qu'il recommence dans la mars tampon, il fait donc la bascule.
sur Windows, Autohotkey peut venir à la rescousse et envoyer des emacs une frappe lorsque vous relâchez la touche de contrôle. Voici mon script: p> Chaque fois que l'onglet C est enfoncé dans EMACSS, le script commence à interroger l'état de la clé de contrôle. Lorsque la clé est relâchée, il envoie EMACS la séquence de touches Voici l'extrait de .emacs pertinent: p> donc, c'est un type de hacky, mais cela fonctionne. Merci aux affiches de http://www.autohotkey.com/board/topic/72433 -Controltab / , qui essayait de résoudre un problème similaire. p> p> C-C: CODE>. J'ai cette clé sur une commande "null", qui suffit à faire remarquer Iflipb de remarquer ce qui se passe. P>
Je l'ai essayé dans Macosx, mais je ne peux pas faire c-x code> ou c-s code> (isarch) ou etc ... mais ignore ces problèmes, cela fonctionne.
Ajoutez les éléments suivants à votre .emacs em> fichier:
Dupliquer? onglet EMACS entre les tampons
Il a l'air très similaire, mais je ne suis pas sûr de ce qu'ils soient les mêmes. Je souhaite spécifiquement que la mémoire tampon d'anneau soit modifiée lorsque Ctrl est libérée (pas lorsque le tampon est modifié ou après une valeur de délai d'attente). Parfois, je veux lire rapidement le contenu d'un tampon et revenir à l'endroit où j'étais. Emacs ne peut tout simplement pas le faire..yet.
Vous décrivez une pile comme un comportement comme Alt-Tab dans Windows. Pourquoi ne pas utiliser la flèche de gauche / droite C-X pour aller au tampon suivant / antérieur? Vous pouvez mapper cela jusqu'à une seule touche Appuyez sur (onglet C, C-S-TAB).