Dans Emacs, C-x o m'amène à la fenêtre suivante.Emacs, changez pour la fenêtre précédente
Quelle macro de clavier m'amène à la fenêtre précédente dans Emacs?
Dans Emacs, C-x o m'amène à la fenêtre suivante.Emacs, changez pour la fenêtre précédente
Quelle macro de clavier m'amène à la fenêtre précédente dans Emacs?
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. (C-- est un raccourci pour C-u - 1)
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 les fenêtres en utilisant C-x flèche-clé.
(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)
base sur idée de @Nate mais légèrement modifiée pour soutenir le cyclisme en 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)
Si vous travaillez avec plusieurs fenêtres emacs (> 3) beaucoup et vous voulez économiser quelques frappes ajouter à 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 parcourir rapidement à travers les fenêtres avec Mo
C'est exactement la solution dont j'avais besoin. Tout ce que je voulais, c'était que la commande de changement de fenêtre soit une seule frappe répétée. Merci! J'ai dû changer other-window-or-frame à other-window pour le faire fonctionner, FYI. Je suis sur Emacs 24.2.1. – Geoff
Je pense que ce sont de très bonnes liaisons (surtout quand vous avez 2+ fenêtres), merci. Comme dit aussi chapeau à changer à 'other-window' pour le faire fonctionner. – dolzenko
Personnellement, je préfère utiliser window-number.el
Pour sélectionner une autre fenêtre, utilisez Ctrl - x, Ctrl - jn
Où n est le nombre de fenêtre, la modeline de chaque fenêtre montre son numéro, comme le montre la capture d'écran.
Il suffit de télécharger window-number.el, placez-le dans vos emacs load-path et utiliser 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 y a un autre mode similaire appelé switch-window.el
qui vous donne de grands nombres dans les fenêtres. .. (le fait d'appuyer sur le numéro change la fenêtre et rétablit l'affichage.)
Bien, mais je suggère de ne pas lier quelque chose à 'C-x C-j', car c'est la liaison par défaut pour' dired-jump' si vous '(require 'dired-x)'. (Voir 'Mx personnaliser-groupe RET dired-keys RET' si vous voulez surcharger cela.) – phils
Après avoir posté ceci, j'ai décidé d'utiliser' switch-window.el', il utilise 'Cx o' à la place, et quand il y a seulement deux fenêtres actives, il sélectionne simplement l'autre fenêtre. Je pense qu'il est plus sage de relier 'C-x o' pour faire le truc' window-number', vous avez raison sur 'dired-jump'. Personnellement, je fais moins de changement de fenêtre et j'utilise 'C-x b' moi-même, mais avoir le' C-x o' amélioré est assez agréable. – ocodo
wow incroyable thème Emacs dans la première capture d'écran. comment puis-je l'avoir? – semente
Il existe déjà un package qui vous permet de changer de fenêtre en utilisant M-. check this website.Ajoutez ceci à votre fichier init:
(require 'windmove)
(windmove-default-keybindings 'meta) ;; or use 'super to use windows key instead alt
Juste pour ajouter à @Nate, @aspirin et @ la réponse de Troydm Je trouve cela un ajout très utile si vous décidez de lier les windmove commandes à ne importe quelle combinaison de touches que vous choisissez :
(setq windmove-wrap-around t)
Avec la configuration par défaut, vous obtiendrez une erreur quand vous arrivez à tenter de passer à une fenêtre qui n'existe pas qui devient assez ennuyeux après un certain temps. Cependant, lorsque windmove-wrap-around est défini, tenter de quitter le 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.
Il y a quelques très bons et des réponses complètes ici, mais pour répondre à la question de façon minimaliste:
(defun prev-window()
(interactive)
(other-window -1))
(define-key global-map (kbd "C-x p") 'prev-window)
Je ne sais pas depuis quand, mais emacs a maintenant '' previous-window'' intégré. – Arne
M-n
et M-p
fait me le plus de sens, car ils sont analogues à C-n
(suivant -ligne) et C-p
(ligne précédente):
(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)
Testé sur Emacs 24. – Tshepang
I 'ai upvoted et utilisé cette config. Le problème est que 'M-n' et' M-p' sont déjà utilisés dans les terminaux (gdb, python, ielm, etc.) donc vous devrez revenir à une autre méthode pour sauter du tampon du terminal. – mihai
Dans quel cas sont-ils utilisés dans ces environnements? – Tshepang
En ce qui concerne la réponse de Nate, j'ai remplacé le arrow keys
d'utiliser la p
traditionnelle pour aller up
, n
pour aller down
, f
pour aller right
et b
pour aller left
. J'ai également remplacé le Ctrl
avec la clé Super
comme C-p, C-n, C-f and C-b
sont les touches de mouvement par défaut. Cette combinaison avec M
vous permet de sauter des caractères et des lignes au lieu de passer un par un après chaque frappe. Ainsi, la clé Super
a senti le meilleur choix pour garder la touche facile. Aussi, maintenant vous n'avez plus besoin de retirer votre main de la ligne d'attache!
(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)
Espérons 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)))
altj et altk cycle permet de faire défiler vos tampons de Visibles. En avant et en arrière, pour être exact.
M-k est un raccourci utile. d'autres alternatives? –
Bonne idée - adorez-le! –
coool ~~ vous avez mon vote. Je suis nouveau à Emacs (mais je l'aime ... génie). BTW, quel est le «kbd» pour? – lkahtz
BTW, c'est similaire aux commandes de [ratpoison] (http://www.nongnu.org/ratpoison/) pour [passer à d'autres "frames"] (http://www.nongnu.org/ratpoison/doc/ Default-Key-Bindings.html # Default% 20Key% 20Bindings): 'Ct Up',' Ct Down', etc. –