В emacs иногда я нахожусь в процессе поиска файла, переключения буферов или выполнения каких-либо действий в минибуфере, и я по какой-то причине щелкну где-нибудь еще. Когда я возвращаюсь, единственный способ снова активировать подсказку минибуфера - это щелкнуть внутри минибуфера, что раздражает, потому что это тонкая область. Есть ли способ вернуться к активному приглашению минибуфера без использования мыши?
4 ответа
Это будет делать то, что вы хотите. Привязать к ключу на ваш выбор:
(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)
C-x o
Повторите по мере необходимости.
Cx o запускает команду other-window, которая является интерактивной встроенной функцией в `C исходном коде '.
Если вы не хотите переключаться между окнами, вы можете добавить функцию в файл инициализации и связать ее с клавишей. Нечто подобное может работать:
(defun select-minibuffer ()
"Make the active minibuffer the selected window."
(interactive)
(when (active-minibuffer-window)
(select-window (active-minibuffer-window))))
Другой вариант - использование switch-window
Я считаю, что это действительно полезный пакет: он позволяет вам быстро перейти к любому окну Emacs, визуально (и я использую много открытых окон в Emacs).
Но я просто выясняю, что он также позволяет вам перейти к минибуферу, если он активен:
Надеюсь, поможет.
;; faster switching between windows in the same frame
(windmove-default-keybindings)
Добавление двух приведенных выше строк кода в .emacs.el позволит легко и эффективно перемещать не только минибуфер, но и перемещаться по всем остальным окнам в кадре Emacs с помощью Shift-Arrow.