Comment changer rapidement de fenêtre?
J'ai souvent plusieurs fenêtres ouvertes et j'ai besoin de basculer entre elles. En ce moment, j'utilise C-x o
pour arriver à celui que je veux. Existe-t-il un flux de travail plus efficace pour cela?
Comment changer rapidement de fenêtre?
J'ai souvent plusieurs fenêtres ouvertes et j'ai besoin de basculer entre elles. En ce moment, j'utilise C-x o
pour arriver à celui que je veux. Existe-t-il un flux de travail plus efficace pour cela?
Réponses:
Je préfère évidemment as-window pour cela. Vous pouvez basculer entre les fenêtres et les cadres visibles. C'est dans MELPA, vous pouvez l'installer rapidement. La seule chose à faire est de le lier:
(global-set-key (kbd "C-x o") 'ace-window)
Vous pouvez également utiliser un accord de clé plus court, car le changement de fenêtre est une tâche courante:
(global-set-key (kbd "M-p") 'ace-window)
ace-window
C'est un remplacement instantané pour other-window
. Contrairement à ce dernier, il n'est jamais nécessaire d'appeler ace-window
deux fois ou plus pour sélectionner une fenêtre: vous sélectionnez la fenêtre de votre choix lors d'un appel (éventuellement sur plusieurs cadres).
En plus de changer de fenêtre, vous ace-window
pouvez en faire plus (supprimer ou changer de fenêtre, etc.), voir le fichier LISEZMOI .
ace-window
puis vu switch-window
qui semble faire à peu près la même chose, sauf que les lettres sont plus prononcées. semble drôle nous avons les deux forfaits.
switch-window
avant de me soumettre ace-window
à MELPA.
ace-window
, il a plus de personnalisation que d'autres paquets, je suppose. Néanmoins, l’on pourrait peut-être aider à l’avenir si l’on souhaite associer une fonction qui ressemblerait à l’action d’échange intelligent, mais grignoterait cette fenêtre, ce qui donnerait une fenêtre plus grande au point et une fenêtre choisie de taille plus petite fenêtre vers le haut). Le rapport doit être déterminé dans ce cas comme un demi, un quart ou un tiers.
Une façon est d'utiliser windmove
. Avec ses raccourcis clavier par défaut, il permet de basculer vers la fenêtre à côté de la fenêtre active.
Il est construit dans Emacs, il n’est donc pas nécessaire d’installer quoi que ce soit; activez-le simplement avec la configuration minimale suivante dans votre fichier init:
(windmove-default-keybindings)
Vous pouvez ensuite passer aux fenêtres voisines en utilisant les touches suivantes (où la flèche utilisée définit intuitivement la direction dans laquelle vous vous déplacez): S-<left>
, S-<right>
, S-<up>
, S-<down>
.
Si vous préférez utiliser un autre modificateur au lieu de shift, vous pouvez le fournir comme argument windmove-default-keybindings
. Par exemple:
(windmove-default-keybindings 'meta)
ou
(windmove-default-keybindings 'control)
Plus d'infos sur Emacs Wiki .
(windmove-default-keybindings 'meta)
comme suggéré sur EmacsWiki.
Shift-arrow
) , mais quand vous avez un grand moniteur avec beaucoup de scissions, un tel mouvement devient rapidement difficile à manier. Il serait plus intéressant d’énumérer les fenêtres / scissions. Comme ace-window
, mais avec moins de pressions sur les touches et un algorithme évident pour déterminer immédiatement le nombre souhaité.
Vous pouvez vous connecter other-window
à une séquence de clé plus facile à saisir.
Par exemple, je suis C-.
lié à other-window
, et C-,
lié à aller à la fenêtre précédente.
(global-set-key (kbd "C-.") #'other-window)
(global-set-key (kbd "C-,") #'prev-window)
(defun prev-window ()
(interactive)
(other-window -1))
Ceci est particulièrement utile pour déplacer plusieurs fenêtres. une fois que vous maintenez la touche Control enfoncée, il vous suffit d'appuyer sur un seul bouton pour passer à la fenêtre suivante. C'est beaucoup plus facile que trois pressions de touches par coup.
C-x o
pour other-window
est l'un des rares prétendants au titre de "pire raccourci emacs par défaut". Ma solution (similaire à ZCK) était de lier de nouveau other window
à une séquence de touches plus facile (chemin) - je l' ai lié à C-;
(et mon Caps-Lock
est échangé avec Ctrl
donc tout ce qu'il faut est un robinet rapide des petits doigts). Btw, je suis totalement dépendant de certaines fonctionnalités de helm
et icicles
(c.-à-d., Je ne suis pas "anti-packages" ou quoi que ce soit); Je pense juste qu'une solution simple fonctionne mieux ici.
M-o
pour other-window
. Certains modes ont déjà M-o
liaison, notamment diff-mode
, ggtag-mode
et ibuffer-mode
. Vous devez le dissocier manuellement dans chaque mode. unbind-key
fourni par bind-key.el
est très utile.
M-o
aussi, et ai M-O
lié ace-window
pour quand j'ai besoin de la puissance supplémentaire.
fenêtre-numérotation.el!
J'attribue le raccourci clavier ", 1", ", 2", ", 3" pour changer de fenêtre (veuillez noter que j'utilise le mode maléfique)
De plus, le numéro de la fenêtre est affiché sur la ligne de mode en couleur PINK, souligné.
C'est un indice visuel que vous ne pouvez jamais ignorer,
C'est le moyen le plus rapide de changer de fenêtre.
vérifier https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-evil.el et https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-modeline .el pour ma configuration.
Sylvain Benner a adopté mon idée dans spacemacs mais les combinaisons de touches sont différentes . Donc, si vous utilisez des spacemacs, vous obtenez immédiatement la solution la plus rapide.
window-number
avec M-<num>
pour changer rapidement de fenêtres b / w. Concept similaire à celui-ci
Sans utiliser de module complémentaire, vous pouvez continuer à utiliser C-x o
un préfixe facultatif pour ignorer autant de fenêtres. Ex.: C-u 1 C-x o
Ira à la fenêtre suivante dans l’ordre (c’est-à-dire ce que vous obtiendrez avec plain C-x o
), C-u 2 C-x o
passe deux fenêtres plus, C-u 3 C-x o
trois fois et ainsi de suite.
Un extrait de la other-window
docstring (la fonction appelée par C-x o
:
COUNT spécifie le nombre de fenêtres à ignorer, en commençant par la fenêtre sélectionnée, avant de faire la sélection. Si COUNT est positif, sautez les fenêtres COUNT. Si COUNT est négatif, sautez les fenêtres -COUNT à l'envers. COUNT zéro signifie que vous ne sautez aucune fenêtre. Sélectionnez donc la fenêtre sélectionnée. Dans un appel interactif, COUNT est l'argument de préfixe numérique. Retour à zéro.
Certaines personnes se souviendront peut-être de l'éditeur Brief (assez curieusement produit par une société appelée Underware).
Il y avait un moyen intéressant de basculer entre les fenêtres visibles. La flèche M déplacerait le curseur dans la fenêtre directement dans l'alignement de la direction de la touche fléchée.
Donc, je cartographié les winmove-left
, winmove-right
, winmove-up
et winmove-down
fonctions M-left
, M-right
, M-up
et les M-down
touches comme suit dans mon fichier .emacs -
(global-set-key [M-left] 'windmove-left) ; move to left window
(global-set-key [M-right] 'windmove-right) ; move to right window
(global-set-key [M-up] 'windmove-up) ; move to upper window
(global-set-key [M-down] 'windmove-down) ; move to lower window
Maintenant, je peux passer facilement d’une fenêtre à l’autre, quelle que soit l’encombrement de ma configuration.
(windmove-default-keybindings 'meta)
!
Si vous utilisez Icicles puis C-x o
permet de sélectionner les fenêtres par nom (ou en faisant du vélo).
Sans préfixe arg, C-x o
est identique à l’habitude, à other-window
moins que le cadre n’ait qu’une seule fenêtre, auquel cas c’est le cas other-frame
.
Avec un préfixe arg, C-x o
est une commande multiple qui vous permet de naviguer entre les fenêtres ou les cadres par nom (ou par cycle). La navigation entre les fenêtres utilise plusieurs commandes icicle-select-window
. navigation parmi les utilisations de cadres icicle-select-frame
.
La navigation utilisée dépend du préfixe arg:
Zéro préfixe arg (par exemple C-0
): Si le cadre sélectionné a plusieurs fenêtres, il en est ainsi
icicle-select-window
, les fenêtres se trouvant dans le même cadre que les candidats. Sinon (cadre à fenêtre unique), c’est icicle-select-frame
.
C-u
: Si le cadre sélectionné a plusieurs fenêtres, il en est ainsi
icicle-select-window
, les fenêtres de tous les cadres visibles étant candidates. Sinon, c'est icicle-select-frame
.
C-u C-u
: icicle-select-window
, avec des fenêtres de tous les cadres en tant que candidats (y compris les cadres iconifiés ou cachés).
Comme toujours dans Icicles , vous pouvez combiner (a) l' achèvement , la saisie de texte pour limiter l'ensemble des candidats correspondant (noms de fenêtre ou de cadre, dans ce cas), avec (b) le cyclisme (parmi les candidats correspondant).
Pensez à utiliser un accord clé pour sauter rapidement entre les fenêtres. Je trouve cela beaucoup plus rapide que de chercher une touche de modification (et de moins forcer mes mains également).
Mon choix de paquet à utiliser est ace-window
, ce qui vous permet de naviguer plusieurs fenêtres plus facilement que juste other-window
.
(require 'key-chord)
(key-chord-define-global "xo" 'ace-window)
(key-chord-mode +1)
Il est évident que d'utiliser ce dont vous avez besoin key-chord
et ace-window
, les deux sont disponibles en Melpa.
ace-window
fait le travail comme dans la réponse de @ abo-abo. Il me semble que, dans ce contexte, la combinaison de touches à utiliser aurait plus de sens comme commentaire plutôt que comme réponse. Juste mes deux cents.
key-chord
permet de relier des combinaisons de touches très accessibles. La liaison d'exemple de xo
est plus rapide que C-x o
(profondeur de un contre deux). Cette réponse pourrait être reformulée de manière à souligner que la réponse est orthogonale aux autres réponses sur la sélection de fonction (et qu’elle ace-window
n’est qu’un des nombreux choix pouvant être liés de la manière décrite). Gardez cette réponse distincte!
Quelques bonnes réponses ici, je suis aussi un fan de WinMove, mais je le lie à C- car le mode org utilise M- pour manipuler les en-têtes.
(define-key global-map (kbd "C-<up>") 'windmove-up)
(define-key global-map (kbd "C-<down>") 'windmove-down)
(define-key global-map (kbd "C-<left>") 'windmove-left)
(define-key global-map (kbd "C-<right>") 'windmove-right)
Là où ça devient vraiment bon, c'est si vous le combinez avec Hydra . En suivant les exemples sur leur wiki, j'ai créé mon propre monstre:
(defhydra hydra-windows ()
"C-arrow = switch, S-arrow = size, M-arrow = move"
("C-<left>" windmove-left nil)
("C-<right>" windmove-right nil)
("C-<up>" windmove-up nil)
("C-<down>" windmove-down nil)
("S-<left>" hydra-move-splitter-left nil)
("S-<right>" hydra-move-splitter-right nil)
("S-<up>" hydra-move-splitter-up nil)
("S-<down>" hydra-move-splitter-down nil)
("M-<left>" buf-move-left nil)
("M-<right>" buf-move-right nil)
("M-<up>" buf-move-up nil)
("M-<down>" buf-move-down nil)
("p" previous-buffer "prev-buf")
("n" next-buffer "next-buf")
("1" delete-other-windows "1")
("d" delete-window "del")
("k" kill-buffer "kill")
("s" save-buffer "save")
("u" (progn (winner-undo) (setq this-command 'winner-undo)) "undo")
("r" winner-redo "redo")
("b" helm-mini "helm-mini" :exit t)
("f" helm-find-files "helm-find" :exit t)
("|" (lambda () (interactive) (split-window-right) (windmove-right)))
("_" (lambda () (interactive) (split-window-below) (windmove-down)))
("q" nil "cancel")
)
(global-set-key (kbd "M-#") 'hydra-windows/body)
Cela me permet de changer de fenêtre, de le redimensionner, de déplacer les tampons de fenêtre en fenêtre, de faire défiler les tampons, de tuer les tampons et même d'annuler les configurations de fenêtre via le mode gagnant, et intègre également la barre. Pour quitter l'hydre, appuyez simplement sur la flèche ou sur une autre touche ne se trouvant pas dans l'hydre. Vous pouvez trouver les fonctions "hydra-move" sur les exemples d'hydra. L'atout majeur de l'hydra est que je n'ai pas à me souvenir de tous ces raccourcis clavier et de son "confort", donc une fois que vous êtes dans l'hydra, tout est disponible sous forme de clé unique. presse.
(windmove-default-keybindings 'control)
:
Si vous utilisez evil-mode
, vous pouvez simplement utiliser un préfixe numérique avec C-w C-w
( evil-window-next
) pour sélectionner la fenêtre souhaitée. So: 1 C-w C-w
sélectionne la première fenêtre par ordre cyclique, 3 C-w C-w
sélectionne la troisième fenêtre par ordre cyclique, etc.
Ace Jump vous permet de naviguer dans votre pointeur vers tous les mots d'un écran, quelle que soit la fenêtre ou le cadre dans lequel ils se trouvent. Ce n'est donc pas si différent d'utiliser Ace Window ou Switch Window.
Un avantage pourrait être que, tout en sautant des fenêtres, vous pouvez également placer votre pointeur avec une certaine précision.
Je trouve toujours cela un peu lourd ou gênant, et j'utilise windmove
plus, parce que c'est très simple, mais j'utilise quand même Ace Jump lorsque je lis dans une autre fenêtre ou un autre cadre et que je veux me déplacer.
Comme d'habitude, il y a cent façons différentes d'y parvenir. Ma façon préférée est d'utiliser NumberedWindows . J'ai ensuite défini le raccourci clavier suivant à l'aide des touches Super et 1-9.
(global-set-key (kbd "s-1") (lambda() (interactive) (window-number-select 1)))
Je vais un peu plus en détail sur ce sujet avec un de mes articles récents que vous pouvez lire dans Afternoon Coder .
Vous pouvez également décider d’utiliser le commutateur-fenêtre pour remplacer visuellementC-x o
switch-window
plus que tous les autres?