Question

Dans Emacs, C-x o me conduit à la fenêtre suivante.

Quelle macro clavier me ramène à la fenêtre précédente dans Emacs?

Était-ce utile?

La solution

Ce serait C-- C-x o

En d'autres termes, C-x 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 C-u et la commande, comme dans C-u 2 C-x o . ( C - est un raccourci pour C-u - 1 )

Autres conseils

Vous pouvez également essayer d’utiliser Windmove, qui vous permet d’accéder à la fenêtre de votre choix en fonction de la géométrie. J'ai les éléments suivants dans mon fichier .emacs pour changer de fenêtre avec C-x arrow-key.

(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <left>") 'windmove-left)

Personnellement, je préfère utiliser numéro-fenêtre.el

Pour sélectionner une autre fenêtre, utilisez Ctrl - x , Ctrl - j n

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

Téléchargez simplement window-number.el , placez-le dans votre emacs load-path et utilisez les éléments suivants dans votre .emacs

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

Il existe un autre mode similaire appelé switch-window.el , qui vous donne de gros chiffres dans les fenêtres ... (appuyer sur le numéro fait basculer la fenêtre et rétablit l'affichage.)

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

Si vous travaillez souvent avec plusieurs fenêtres emacs (> 3) et que vous souhaitez enregistrer des séquences de touches, ajoutez-le à votre fichier d'initialisation et vous serez mieux loti:

(defun frame-bck()
  (interactive)
  (other-window-or-frame -1)
)
(define-key (current-global-map) (kbd "M-o") 'other-window-or-frame)
(define-key (current-global-map) (kbd "M-O") 'frame-bck)

Maintenant, parcourez rapidement les fenêtres avec M-o

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

 (defun prev-window ()
   (interactive)
   (other-window -1))

 (define-key global-map (kbd "C-x p") 'prev-window)

Base sur l'idée de @Nate mais légèrement modifiée pour prendre en charge le cycle arrière entre 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 "C-x <up>") 'windmove-up-cycle)
(global-set-key (kbd "C-x <down>") 'windmove-down-cycle)
(global-set-key (kbd "C-x <right>") 'windmove-right-cycle)
(global-set-key (kbd "C-x <left>") 'windmove-left-cycle)

Juste pour ajouter à la réponse de @Nate, de @aspirin et de @ Troydm, je trouve cet ajout très utile si vous décidez de lier les commandes windmove à la combinaison de touches de votre choix:

(setq windmove-wrap-around t)

Avec la configuration par défaut, vous obtiendrez une erreur lorsque vous tenterez de passer à une fenêtre inexistante qui devient un peu gênante après un certain temps. Cependant, lorsque l'option windmove-wrap-around est définie, le fait de tenter de sortir du bas du cadre, par exemple, sélectionnera plutôt la fenêtre la plus haute du cadre. Cela peut être un comportement plus intuitif pour vous.

Mn et Mp me paraissent les plus judicieux, car ils sont analogues à Cn ( ligne suivante ) et Cp ( ligne précédente ):

(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)

(inspiré par ceci et cela )

En référence à la réponse de Nate, j'ai remplacé les touches fléchées pour utiliser le traditionnel p pour aller haut , n pour aller vers le bas , f pour aller à à droite et b pour aller à à gauche . J'ai également remplacé le Ctrl par Super , car C-p, C-n, C-f et C-b sont les clés de déplacement par défaut. Cette combinaison avec M vous permet de sauter des caractères et des lignes au lieu de les parcourir un par un après chaque frappe. Ainsi, la clé Super était le meilleur choix pour conserver une liaison de clé facile. De plus, vous n’êtes plus obligé de retirer votre main du couloir à la maison!

(global-set-key (kbd "s-p") `windmove-up)
(global-set-key (kbd "s-n") `windmove-down)
(global-set-key (kbd "s-f") `windmove-right)
(global-set-key (kbd "s-b") `windmove-left)

J'espère que ça aide!

(global-unset-key (kbd "M-j"))
(global-unset-key (kbd "M-k"))
(global-set-key (kbd "M-j") (lambda () (interactive) (other-window 1)))
(global-set-key (kbd "M-k") (lambda () (interactive) (other-window -1)))

alt j et alt k parcourront 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 d'initialisation:

(require 'windmove)
(windmove-default-keybindings 'meta) ;; or use 'super to use windows key instead alt
(global-set-key (kbd "C-x a") 'ace-swap-window)  
(global-set-key (kbd "C-x 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 "m-x list-packages"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top