Dans Emacs, C-x om'amène à la fenêtre suivante.
Quelle macro de clavier me ramène à la fenêtre précédente d'Emacs?
Dans Emacs, C-x om'amène à la fenêtre suivante.
Quelle macro de clavier me ramène à la fenêtre précédente d'Emacs?
Réponses:
Vous pouvez également essayer d'utiliser windmove qui vous permet de naviguer vers la fenêtre de votre choix en fonction de la géométrie. J'ai ce qui suit dans mon fichier .emacs pour changer de fenêtre à l'aide de la touche fléchée Cx.
(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)
(windmove-default-keybindings)
lie ces fonctions à SHIFT + haut / bas / gauche / droite, ce qui, à mon avis, est plus pratique que vos C-x
liaisons (qui sont en conflit avec les liaisons par défaut également utiles pour previous-buffer
et next-buffer
. Lkahtz: la (kbd)
fonction vous permet de spécifier des clés en notation de chaîne dans la syntaxe plus lisible qui est également utilisée par Emacs lorsque vous utilisez C-h k
ou C-h c
pour décrire une liaison.
windmove-default-keybindings
pour spécifier un modificateur différent à utiliser conjointement avec les touches fléchées; de sorte que cette fonction peut toujours être pratique pour les personnes qui utilisent le mode de sélection de décalage.
Personnellement je préfère utiliser window-number.el
Pour sélectionner une autre fenêtre, utilisez Ctrl- x, Ctrl- j n
Où n est le numéro de la fenêtre, la modeline de chaque fenêtre montre son numéro, comme indiqué sur la capture d'écran.
Téléchargez simplement 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 C-x C-j 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 grands nombres dans les fenêtres ... (appuyer sur le nombre change la fenêtre et fait revenir l'affichage.)
(source: tapoueh.org )
C-x C-j
, car c'est la liaison par défaut pour dired-jump
si vous (require 'dired-x)
. (Voyez M-x customize-group RET dired-keys RET
si vous voulez remplacer cela.)
switch-window.el
, il utilise à la C-x o
place, et quand il n'y a que deux fenêtres actives, il sélectionne simplement l'autre fenêtre. Je pense qu'il est plus sage de se rebeller C-x o
pour faire l' window-number
affaire, vous avez tout à fait raison dired-jump
. Personnellement, je fais moins de changement de fenêtre et C-x b
je m'utilise moi-même, mais avoir l'amélioration C-x o
est assez agréable.
Si vous travaillez beaucoup avec plusieurs fenêtres emacs (> 3) et que vous voudrez enregistrer quelques frappes, ajoutez ceci à votre fichier init et vous serez mieux:
(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, il suffit de parcourir rapidement les fenêtres avec Mo
other-window
pour que cela fonctionne.
Il y a ici de très bonnes réponses 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)
previous-window
intégré.
M-x
donc devrait servir un but différent.
Basé sur l'idée de @Nate mais légèrement modifié pour prendre en charge 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 "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, @aspirin et @ Troydm, je trouve que c'est un ajout très utile si vous décidez de lier les commandes windmove à la combinaison de touches que vous choisissez:
(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 ennuyeux après un certain temps. Cependant, lorsque windmove-wrap-around est défini, une tentative de déplacement du bas du cadre, par exemple, sélectionnera à la place la fenêtre la plus haute du cadre. Cela peut être un comportement plus intuitif pour vous.
M-n
et M-p
cela a le plus de sens pour moi, car ils sont analogues à C-n
( next-line ) et C-p
( previous-line ):
(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)
M-n
et M-p
sont déjà utilisés dans les terminaux (gdb, python, ielm, etc.), vous devrez donc revenir à une autre méthode pour sortir du tampon du terminal.
En référence à la réponse de Nate, j'ai remplacé le arrow keys
pour utiliser le traditionnel p
pour aller up
, n
pour aller down
, f
pour aller right
et b
pour aller left
. J'ai également remplacé le Ctrl
avec Super
clé comme C-p, C-n, C-f and C-b
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 les parcourir un par un après chaque frappe. Super
Key s'est donc senti le meilleur choix pour garder une reliure de clé facile. De plus, vous n'avez plus besoin de retirer votre main de la ligne de départ!
(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)))
altjet altkparcourra vos tampons visibles. En avant et en 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 "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"
C-x z
pour répéter la dernière commande pour changer rapidement de fenêtre.