2015-03-03 3 views
8

Когда-то содержимое минибуфера показывает выход команды (emacs 24). Это не слишком много неудобств, когда выход - всего одна строка. Это более раздражает, когда команда состоит из нескольких строк, а минибуфер использует много строк отображения, которые могут быть использованы для чего-то другого.Как удалить или очистить минибуфер emacs?

Есть ли способ очистить содержимое минибуфера?

Примечание: Когда I M-! echo usage: foo ; echo содержание минибуфера изменяется на usage: foo.

Примечание: Я не рекурсивного редактирования, минибуфер не активен, используя C-g, M-x C-g , (message nil), M-x delete-minibuffer-contents, M-: (kill-buffer " Echo Area 0") не ясно Минибуфер

ответ

1

Хотя я не понимаю, почему следующие очищает минибуфер: M-! echo ; echo

0

Попробуйте нажать C-г, это очистит эхо-область.

7

Обычно C-g прекрасно работает в этих случаях. Он напечатает «Quit» в минибуфере, который является лишь одной строкой и достаточно ненавязчивой.

Если вам необходимо очистить минибуфер программным способом, позвоните по телефону (message nil).

Если по какой-то причине, C-g не работает для вас, сделайте новую команду и клавиш для очистки минибуфер

(defun my-clear-message() 
    (interactive) 
    (message nil)) 

(global-set-key (kbd "C-c c") 'my-clear-message) 
+0

Я попробую ** (сообщение nil) ** в следующий раз, когда я столкнулся с этой проблемой, спасибо за подсказку :-) –

+0

Это не сработало, к сожалению. –

1

Моя догадка, из вашего описания («минибуфер не активен») и ваши ответы на другие ответы, то, что это не минибуфер, который нуждается в очистке - это эхо-область.

Это то же физическое пространство, но область эха для вывода (например, message), тогда как минибуфер предназначен в первую очередь для ввода.

Чтобы очистить зону эха, используйте (message nil), как предложено. Или используйте минибуфер, а затем C-g - например, M-x C-g. Обычно это заботится о работе (но см. Ниже, об убийстве буфера эхо-области, если вам действительно нужно его очистить).

Если это действительно вход Минибуфер, который вы хотите удалить, а затем:

  • C-g (повторяется, при необходимости) завершает работу минибуфер.
  • Вы можете использовать любые клавиши очистки текста для очистки ввода без выхода. Например, C-x DEL очистит совсем немного (это backward-kill-sentence). Я связываю M-k (обычно kill-sentence) с командой, которая удаляет все входные данные минибуфера (например, это относится к Icicles). Команда delete-minibuffer-contents вытирает все.

(Вы также можете убить буфер эхо-области, если он когда-нибудь получить загрязнена какой-то текст, который вы хотите избавиться. Буфер будет воссоздан автоматически. С ванильным Emacs это немного проблематично для этого в интерактивном режиме, но вы можете хотя бы сделать это, используя M-: (kill-buffer " *Echo Area 0*") (обратите внимание на префикс char SPC).)

1

Этот выход обычно удаляется, как только вы делаете что-нибудь еще в Emacs. Но иногда Emacs путается, и сообщение продолжает появляться в области эха.

Удаление буфера с именем *Shell Command Output* решит проблему, но когда это произойдет со мной, Emacs отказывается удалить этот буфер. Удаление содержимого этого буфера решает проблему, но вывод снова появляется в буфере при следующем выполнении команды оболочки.

Вы можете предотвратить эту проблему, переименовав буфер. Один из способов сделать это - сделать этот буферный ток (например, C-x b или M-x switch-to-buffer) и сделать M-x rename-uniquely. Если вы это сделаете и удалите содержимое буфера, проблема будет устранена.

Я понятия не имею, почему иногда Emacs отказывается убить этот буфер, но, к счастью, он позволяет переименовать его, чтобы он больше не использовался для вывода команды.

Смежные вопросы