В GNU emacs каждый раз, когда я нажимаю Ctrl-x Ctrl-b , чтобы увидеть все мои буферы, окно разделяется, чтобы показать список буферов, или если мое окно уже разделено на 2 (для Например, у меня будет оболочка, работающая в нижнем окне), список буферов появится в другом окне.

Я желаю, чтобы список буферов отображался в моем активном окне, чтобы я мог выбрать нужный буфер и продолжить работу в том же окне, вместо того, чтобы Ctrl-x Ctrl-o для другой буфер, выбор буфера (с помощью enter ) и редактирование этого буфера в другом окне ... Я искал его в Google, но это не похоже на обычное желание? Интересно, есть ли у кого-нибудь решение elispy (или другое)?

50
hatmatrix 5 Авг 2009 в 08:28

9 ответов

Лучший ответ

Возможно, вы захотите повторно привязать C-x C-b для вызова buffer-menu, а не list-buffers:

(global-set-key "\C-x\C-b" 'buffer-menu)
64
itsjeyd 25 Апр 2014 в 12:17

Просто настройте переменную same-window-regexps. display-buffer отобразит любой буфер, имя которого соответствует регулярному выражению в текущем выбранном окне.

(Вы захотите добавить "[*]Buffer List".)

15
jrockway 5 Авг 2009 в 13:30

Не совсем решение, но ido-mode предоставляет другой и мощный способ взаимодействия с буферами. C-x b покажет список всех открытых буферов, а выбранный вами откроется в текущем окне.

14
mrwmrw 5 Авг 2009 в 04:39

Как ни странно, здесь нет ответа по поводу ibuffer.

Я бы рекомендовал это как стандартное изменение для большинства пользователей Emacs:

(global-set-key (kbd "C-x C-b") 'ibuffer)

Ibuffer - это очень продвинутая замена для списка буферов по умолчанию, и он не только обеспечивает точное требуемое поведение, но и предоставляет множество других функций.

Я перечислил несколько основ фильтрации и группировки буфера в Emacs: помогите мне понять управление файлами / буферами, но не забудьте прочитать документацию для подробностей.

6
Community 23 Май 2017 в 12:17

Попробуй добавить

(ido-mode 1)

В свой .emacs и наслаждайтесь результатом :)

5
Łukasz Lew 31 Окт 2009 в 20:00

Если вам нравится исходный список буферов (в отличие от решения 'buffer-menu, предложенного другими), вы можете использовать это:

(global-set-key (kbd "C-x C-b") 'my-list-buffers)
(defun my-list-buffers (&optional files-only)
  "Display a list of names of existing buffers.
The list is displayed in a buffer named `*Buffer List*'.
Note that buffers with names starting with spaces are omitted.
Non-null optional arg FILES-ONLY means mention only file buffers.

For more information, see the function `buffer-menu'."
  (interactive "P")
  (switch-to-buffer (list-buffers-noselect files-only)))

Это та же функция, что и раньше, только в текущем окне.

3
Trey Jackson 5 Авг 2009 в 05:33

Не уверен, где я это взял, но:

;;; Faster buffer switching
(global-set-key [(C tab)] 'buffer-menu) 

Это заставляет Ctrl-Tab отображать все буферы в текущем окне. Затем вы можете перейти к буферу и нажать Enter, чтобы посетить его.

1
Tim Stewart 5 Авг 2009 в 04:57

Еще одно решение, отличное от того, о чем вы просили: не выбирайте нужный буфер мышью, а закончите вводить его имя (используйте завершение табуляции, чтобы уменьшить количество нажатий клавиш и повысить точность), а затем нажмите Return. Список буферов исчезнет, ​​и новый файл откроется в ранее активном окне.

0
dmckee --- ex-moderator kitten 5 Авг 2009 в 04:47