Comment revenir à une invite de mini-tampon active dans emacs sans la souris

37

Dans emacs, parfois je vais être en train de trouver un fichier, de changer de tampon ou de faire quelque chose dans le mini-tampon, et je clique quelque part pour une raison quelconque. Lorsque je reviens en arrière, la seule façon de réactiver l’invite du mini-tampon est de cliquer à l’intérieur du mini-tampon, ce qui est gênant car il s’agit d’une zone mince. Est-il possible de revenir à une invite de mini-tampon active sans utiliser la souris?

Ryan Thompson
la source

Réponses:

25

Cela fera ce que vous voulez. Lier à la clé de votre choix:

(defun switch-to-minibuffer-window ()
  "switch to minibuffer window (if active)"
  (interactive)
  (when (active-minibuffer-window)
    (select-frame-set-input-focus (window-frame (active-minibuffer-window)))
    (select-window (active-minibuffer-window))))
(global-set-key (kbd "<f7>") 'switch-to-minibuffer-window)
Trey Jackson
la source
2
Si vous avez plusieurs cadres, vous devez ajouter (select-frame-set-input-focus (window-frame (active-minibuffer-window))) avant le select-window.
dshepherd
@dshepherd Je peux confirmer qu'après l'insertion de votre ligne Elisp, la fonction enrichie fonctionne bien avec un seul cadre également. Merci.
dimitarvp
@dshepherd Merci d'avoir mis à jour le code de manière appropriée.
Trey Jackson
22
C-x o 

Répétez si nécessaire.

C-x o exécute la commande other-window, qui est une commande intégrée interactive. fonction dans le `code source C '.

Si vous ne voulez pas parcourir les fenêtres, vous pouvez ajouter une fonction dans votre fichier init et la lier à une clé. Quelque chose comme ça pourrait marcher:

(defun select-minibuffer ()
 "Make the active minibuffer the selected window."
 (interactive)
 (when (active-minibuffer-window)
   (select-window (active-minibuffer-window))))
Richard Hoskins
la source
1
Pourquoi voudriez-vous inclure RET comme ça? Il accepterait automatiquement tout ce qui se trouvait dans le mini-tampon (en supposant un seul C-x o basculé vers le mini-tampon). Généralement, on peut avoir besoin d'utiliser C-x o plusieurs fois s'il y a (dans le jargon Emacs) plusieurs fenêtres ouvertes dans le cadre (en termes d'interface graphique normale: plusieurs panneaux dans la fenêtre).
Chris Johnsen
Tu as raison. Ma faute.
Richard Hoskins
Existe-t-il un moyen d'accéder directement au mini-tampon sans passer par toutes les fenêtres? Dois-je juste écrire une boucle qui fait other-window jusqu'à ce que la fenêtre en cours est minibuffer?
Ryan Thompson
6

Une autre option utilise switch-window

Je trouve ce package très utile: il vous permet de passer rapidement à n’importe quelle fenêtre Emacs, de manière visuelle (et j’utilise beaucoup de fenêtres ouvertes dans Emacs).

Mais je viens de découvrir que cela vous permet également de passer au mini-tampon, s'il est actif:

enter image description here

J'espère que ça aide.

rsenna
la source
1
Un package associé est swap-buffers qui utilise la même méthode pour permuter le tampon actuel avec celui d’une autre fenêtre.
pyrocrasty
0
;; faster switching between windows in the same frame
(windmove-default-keybindings)

Ajouter deux lignes de code ci-dessus à .emacs.el permettra un déplacement simple et efficace, non seulement pour le mini-tampon, mais également pour la navigation dans toutes les autres fenêtres du cadre Emacs à l'aide de Maj-Flèche .

Cảnh Toàn Nguyễn
la source