2008-09-27 5 views
29

Possible en double:
Emacs, switch to previous windowDans Emacs, quelle est la fonction opposée de other-window (C-x o)?

other-window me avance à la fenêtre suivante dans le cadre actuel, mais je veux aussi un moyen de revenir à la fenêtre précédente.

Emacs a next-buffer et previous-buffer, mais pas de fonctions interactives analogues pour la navigation dans les fenêtres. Juste other-window.

+0

REMARQUE: 'frame' et' window' sont des bêtes différentes dans la terminologie Emacs. Veuillez remplacer 'frame' par' window' dans votre question pour éviter toute confusion. – jfs

+0

confusion de trame/fenêtre fixée. – phils

Répondre

32

un argument négatif Fournir avec Cu - ("Ctrl + U", puis "moins"), ou encore plus simplement C-- ("Contrôle moins").

  • Déplacer à la fenêtre précédente: C-- Cx o
  • Déplacer vers l'image précédente: C-- 5 o Cx

De code, (other-window -1) ou (other-frame -1) fera le même chose.

Consultez l'aide de la clé que vous souhaitez inverser (par exemple Ch k Cx o pour afficher l'aide pour o Cx) et si elle dit « Un argument négatif ... » vous savez que vous pouvez utiliser C--.

+0

Un peu étrange mais quand j'ai une mise en page 2x3 windows avec windows 1-6 en utilisant 'Cx o' se déplace de 3 à 4, mais en 4 en utilisant' Cu - Cx o' se déplace de 4 à 2. Qu'est-ce qui me passerait de 4 à 3? – Zitrax

9

Mettez cela dans votre .emacs, et le lier à ce que vous aimez clé

 
(defun back-window() 
    (interactive) 
    (other-window -1)) 
+2

octet-code: Mauvais nombre d'arguments: (lambda nil (interactif) (other-window -1)), 3 – lawlist

+0

@lawlist J'ai eu la même erreur en essayant de faire la même chose que ci-dessus, seulement j'ai appelé ma fonction "précédent -fenêtre". La solution était de changer le nom de la fonction, car il semblait en conflit avec certains emacs internes définis. Pourrait aider votre cas aussi. Voir ici: http://stackoverflow.com/questions/33266109/emacs-defining-function-calling-other-window-with-an-argument-doesnt-work/33266299#33266299 – Colin

+0

@Colin - Il est déjà construit -dans la fonction 'previous-window', donc vous ne voulez pas ** créer votre propre en utilisant le même nom - choisissez un autre nom à la place. Je ne suis pas capable de me souvenir des circonstances entourant ma tentative d'utilisation de cette réponse, mais je vois à partir de la date (5 mai 2013) que j'étais probablement assez nouveau pour Emacs et que j'apprenais juste à naviguer dans Windows. Basé sur mon niveau actuel de capacités Emacs, je ne vois rien de mal avec le code - il n'y a pas de fonction intégrée nommée 'back-window' dans le dernier maître/tronc de développement qui causerait un conflit, etc. – lawlist

5

Différent de ce que vous avez demandé, mais the windmove package vous permet de vous déplacer entre les fenêtres en fonction de leurs emplacements d'écran relatifs, ce qui peut être beaucoup plus facile que de répéter C-x o.

1

Au lieu de C-u -, vous pouvez également donner un argument de préfixe négatif avec seulement M-- (Meta-Minus), c'est-à-dire passer à la fenêtre précédente avec M-- C-x o.

16

Ceci est un ancien article, mais je me demandais la même chose. Il semble qu'il existe maintenant une fonction pour cela dans Emacs: previous-multiframe-window. Je l'ai lié à C-x O, comme en majuscule o. Maintenant, je lance juste quand je veux revenir en arrière.

(global-set-key (kbd "C-x O") 'previous-multiframe-window)

+1

Un problème avec ceci est que si vous avez plusieurs images, cela se fera entre elles toutes, si vous voulez rester dans la trame actuelle seulement. – Malvineous

6

Un raccourci un peu moins gênant disponible par défaut est C-- C-x o. De cette façon, vous n'avez pas à basculer entre Meta et Control en tapant les préfixes.

Questions connexes