How to get back to an active minibuffer prompt in emacs without the mouse
Solution 1
This will do what you want. Bind to the key of your choice:
(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)
Solution 2
C-x o
Repeat as necessary.
C-x o runs the command other-window, which is an interactive built-in function in `C source code'.
If you do not want to cycle through windows, you can add a function in your init file and bind it to a key. Something like this might work:
(defun select-minibuffer ()
"Make the active minibuffer the selected window."
(interactive)
(when (active-minibuffer-window)
(select-window (active-minibuffer-window))))
Solution 3
Another option is using switch-window
I find it to be a really useful package: it allows you to quickly move to any Emacs window, visually (and I do use a lot of open windows in Emacs).
But I just find out it also allows you to move to the minibuffer, if it is active:
Hope it helps.
Related videos on Youtube
Ryan C. Thompson
Updated on September 17, 2022Comments
-
Ryan C. Thompson over 1 year
In emacs, sometimes I will be in the middle of finding a file or switching buffers or doing something in the minibuffer, and I will click somewhere else for some reason. When I go back, the only way to make the minibuffer prompt active again is to click inside the minibuffer, which is annoying because it is a thin area. Is there any way to switch back to an active minibuffer prompt without using the mouse?
-
Chris Johnsen about 14 yearsWhy would you want to include
RET
like that? It would automatically accept whatever was in the minibuffer (assuming a singleC-x o
switched to the minibuffer). Generally, one may need to useC-x o
multiple times if there are (in Emacs parlance) multiple windows open in the frame (in normal GUI terms: multiple panes in the window). -
Richard Hoskins about 14 yearsYou're right. My bad.
-
Ryan C. Thompson about 14 yearsIs there any way to get directly to the minibuffer without potentially cycling through all windows? Should I just write a loop that does
other-window
until current window is minibuffer? -
pyrocrasty almost 9 yearsA related package is
swap-buffers
which uses the same method for swapping the current buffer with that in another window. -
dshepherd almost 9 yearsIf you have multiple frames then you need to add
(select-frame-set-input-focus (window-frame (active-minibuffer-window)))
before theselect-window
. -
dimitarvp over 8 years@dshepherd I can confirm that after inserting your Elisp line, the enriched function is working well with only one frame as well. Thanks.
-
Trey Jackson over 8 years@dshepherd Thanks, have updated code appropriately.