Emacs, passez à la fenêtre précédente

Dans Emacs, Cx o m’amène à la fenêtre suivante.

Quelle macro de clavier m’amène à la fenêtre précédente dans Emacs?

Ce serait C-- Cx o

En d’autres termes, Cx o avec un argument de -1. Vous pouvez spécifier le nombre de fenêtres à déplacer en insérant un argument numérique entre Cu et la commande, comme dans Cu 2 Cx o . ( C-- est un raccourci pour Cu - 1 )

Vous pouvez également essayer d’utiliser windmove qui vous permet de naviguer dans la fenêtre de votre choix en fonction de la géomésortinge. J’ai le fichier suivant dans mon fichier .emacs pour changer de fenêtre en utilisant la touche fléchée Cx.

(global-set-key (kbd "Cx ") 'windmove-up) (global-set-key (kbd "Cx ") 'windmove-down) (global-set-key (kbd "Cx ") 'windmove-right) (global-set-key (kbd "Cx ") 'windmove-left) 

Personnellement, je préfère utiliser window-number.el

Pour sélectionner une autre fenêtre, utilisez Ctrlx , Ctrlj n

n est le numéro de la fenêtre, le modèle de chaque fenêtre affiche son numéro, comme indiqué sur la capture d’écran.

Il suffit de télécharger window-number.el , placez-le dans votre chemin de chargement emacs et utilisez ce qui suit dans votre .emacs

  (autoload 'window-number-mode "window-number" "A global minor mode that enables selection of windows according to numbers with the Cx Cj prefix. Another mode, `window-number-meta-mode' enables the use of the M- prefix." t) 

Il y a un autre mode similaire appelé switch-window.el qui vous donne de gros chiffres dans les fenêtres … (appuyer sur le numéro permet de changer la fenêtre et de revenir à l’affichage).

http://tapoueh.org/images/emacs-switch-window.png

Si vous travaillez avec plusieurs fenêtres emacs (> 3) et que vous voulez sauvegarder des séquences de touches, ajoutez-les à votre fichier d’initialisation et vous serez mieux lotis:

 (defun frame-bck() (interactive) (other-window-or-frame -1) ) (define-key (current-global-map) (kbd "Mo") 'other-window-or-frame) (define-key (current-global-map) (kbd "MO") 'frame-bck) 

Maintenant, il suffit de parcourir rapidement les fenêtres avec Mo

Il y a des réponses très bonnes et complètes ici, mais pour répondre à la question de manière minimaliste:

  (defun prev-window () (interactive) (other-window -1)) (define-key global-map (kbd "Cx p") 'prev-window) 

Base sur l’idée de @Nate mais légèrement modifiée pour permettre le cycle arrière entre les fenêtres

 ;; Windows Cycling (defun windmove-up-cycle() (interactive) (condition-case nil (windmove-up) (error (condition-case nil (windmove-down) (error (condition-case nil (windmove-right) (error (condition-case nil (windmove-left) (error (windmove-up)))))))))) (defun windmove-down-cycle() (interactive) (condition-case nil (windmove-down) (error (condition-case nil (windmove-up) (error (condition-case nil (windmove-left) (error (condition-case nil (windmove-right) (error (windmove-down)))))))))) (defun windmove-right-cycle() (interactive) (condition-case nil (windmove-right) (error (condition-case nil (windmove-left) (error (condition-case nil (windmove-up) (error (condition-case nil (windmove-down) (error (windmove-right)))))))))) (defun windmove-left-cycle() (interactive) (condition-case nil (windmove-left) (error (condition-case nil (windmove-right) (error (condition-case nil (windmove-down) (error (condition-case nil (windmove-up) (error (windmove-left)))))))))) (global-set-key (kbd "Cx ") 'windmove-up-cycle) (global-set-key (kbd "Cx ") 'windmove-down-cycle) (global-set-key (kbd "Cx ") 'windmove-right-cycle) (global-set-key (kbd "Cx ") 'windmove-left-cycle) 

Juste pour append à la réponse de @Nate, @aspirin et @ Troydm, je trouve que ceci est un ajout très utile si vous décidez de lier les commandes windmove à la combinaison de touches choisie:

 (setq windmove-wrap-around t) 

Avec la configuration par défaut, vous obtiendrez une erreur lorsque vous tenterez de vous déplacer vers une fenêtre qui n’existe pas, ce qui devient un peu gênant après un certain temps. Toutefois, lorsque Windmove-Wrap-Around est défini, la tentative de quitter le bas du cadre, par exemple, sélectionnera la fenêtre la plus haute du cadre. Cela peut être un comportement plus intuitif pour vous.

Mn et Mp le plus de sens pour moi, car ils sont analogues à Cn ( ligne suivante ) et Cp ( ligne précédente ):

 (define-key global-map (kbd "Mp") 'previous-multiframe-window) (define-key global-map (kbd "Mn") 'other-window) 

(inspiré par ceci et cela )

En référence à la réponse de Nate, j’ai remplacé les arrow keys pour utiliser le traditionnel p pour up , n pour down , f pour aller à right et b pour aller à left . J’ai également remplacé la Ctrl avec la touche Super car Cp, Cn, Cf and Cb sont les touches de déplacement par défaut. Cette combinaison avec M vous permet de sauter des caractères et des lignes au lieu de passer une à une après chaque frappe. Ainsi, la clé Super sentait le meilleur choix pour la garder facile à utiliser. De plus, vous n’avez plus à retirer votre main de la rangée!

 (global-set-key (kbd "sp") `windmove-up) (global-set-key (kbd "sn") `windmove-down) (global-set-key (kbd "sf") `windmove-right) (global-set-key (kbd "sb") `windmove-left) 

J’espère que cela aide!

 (global-unset-key (kbd "Mj")) (global-unset-key (kbd "Mk")) (global-set-key (kbd "Mj") (lambda () (interactive) (other-window 1))) (global-set-key (kbd "Mk") (lambda () (interactive) (other-window -1))) 

alt j et alt k parcourent vos tampons visibles. Avant et arrière, pour être exact.

Il existe déjà un package qui vous permet de changer de fenêtre en utilisant M-. Consultez ce site web . Ajoutez ceci à votre fichier init:

 (require 'windmove) (windmove-default-keybindings 'meta) ;; or use 'super to use windows key instead alt 
 (global-set-key (kbd "Cx a") 'ace-swap-window) (global-set-key (kbd "Cx q") 'ace-select-window) download ace-window from the melpa repo if you don't know how to do that put this in your .emacs file if you don't have one create it (package-initialize) (require 'package) (add-to-list 'package-archives '("melpa" , "http://melpa.org/packages/")) (package-initialize) then "mx list-packages"