Недавно я начал использовать emacs, и мне нравится использовать его по большей части. Единственное, что мне не нравится, - это переключение между буферами. У меня часто есть несколько буферов, и я устал от использования C-x b
и C-x C-b
, есть ли пакеты, которые облегчают переключение между буферами? Я просмотрел emacs wiki при переключении буферов, и я был бы признателен за понимание/отзывы о том, что они используют/наслаждаются. Благодарю.
Как я могу легче переключаться между буферами в Emacs?
Ответ 1
UPDATE: iswitchb-mode
устарел в Emacs >= 24.4, заменен на ido
.
Все функции iswitchdb
теперь предоставляются ido
. Росс предоставил ссылку на документацию в своем ответе. Вы можете активировать с помощью следующего в .emacs
(или использовать интерфейс настройки, как предлагает Росс):
(require 'ido)
(ido-mode 'buffers) ;; only use this line to turn off ido for file names!
(setq ido-ignore-buffers '("^ " "*Completions*" "*Shell Command Output*"
"*Messages*" "Async Shell Command"))
По умолчанию ido
предоставляет завершение имен буферов и имен файлов. Если вы хотите заменить функции iswitchb
, вторая строка отключит эту функцию для имен файлов. ido
будет игнорировать любые буферы, соответствующие регулярным выражениям, перечисленным в ido-ignore-buffers
.
Поведение, описанное ниже для iswitchb-mode
, в равной степени относится к ido
для переключения буферов.
iswitchb-mode (Emacs < 24.4)
iswitchb-mode
заменяет поведение по умолчанию C-x b
на очень интуитивную систему переключения буфера с завершением. Есть более сложные варианты, но мне никогда не нужно было больше этого.
После того, как вы нажмете C-x b
, вам будет представлен список всех буферов. Начните вводить имя нужного вам буфера (или его часть), а список сужается до тех пор, пока не будет выбран только один буфер. Вам не нужно заполнять имя, однако, как только нужный буфер будет подсвечен, нажатие enter переместит вас к нему. Вы также можете использовать C-s
и C-r
для перемещения по списку по порядку.
По умолчанию вы можете включить его в своем .emacs:
(iswitchb-mode 1)
Вы также можете сказать ему игнорировать определенные буферы, которые вам никогда (или очень редко) не нужно переключать на:
(setq iswitchb-buffer-ignore '("^ " "*Completions*" "*Shell Command Output*"
"*Messages*" "Async Shell Command"))
Ответ 2
Вы можете использовать C-x <right>
(next-buffer
) и C-x <left>
(previous-buffer
) для циклического перемещения в буферном кольце. Вы можете привязать S-<right>
и S-<left>
к этим функциям. (S
является "супер-ключом" или окном-ключом). Таким образом вы можете сэкономить несколько нажатий клавиш.
Кроме того, обратите внимание, что C-x b
имеет запись по умолчанию, то есть отображает стандартное значение (большую часть времени это ранее просматриваемый буфер), так что вам не всегда нужно явно вводить имя буфера.
Еще один приятный трюк - открыть отдельные окна с помощью C-x 2
и C-x 3
. Это отображает несколько буферов одновременно. Затем вы можете привязать C-<tab>
к other-window
и получить что-то похожее на просмотр с вкладками.
Ответ 3
M-x customize-group ido
затем установите Ido Mode
в Turn on both buffer and file
и установите Ido Everywhere
в on
. Затем нажмите кнопку Save for future sessions
вверху и наслаждайтесь магией ido для файлов и буферов. Прочтите документы, чтобы понять, как использовать ido.
Кроме того, посмотрите smex
.
Ответ 4
-
ido-mode
обеспечивает эффективный способ переключения буферов. -
ibuffer
лучше всего подходит для управления всеми открытыми буферами. -
anything
хорош для выбора интересующей вещи из разных источники. (например: один ключ может использоваться для переключения на другой буфера или открыть недавно закрытый файл или открыть файл, находящийся в том же каталоге или... что угодно...)
Ответ 5
Если вы посмотрели на Emacs Wiki, у вас, вероятно, уже есть вся эта информация, но вот несколько других релевантных вопросов Q & As:
- Emacs: помогите мне понять управление файлами/буферами
- Переключение буфера в Emacs
- Как вызвать список буферов в Emacs
Мой инструментарий состоит из ibuffer, windmove + framemove, winner-mode и пользовательской привязки, чтобы сделать C-x left/right и C-c left/right меньше проблем.
Ответ 6
Я отобразил список "§" -key в "buffer-list", и я считаю его очень эффективным.
Ответ 7
Я начал использовать что-нибудь пару дней, и мне это очень нравится: http://www.emacswiki.org/emacs/Anything.
Emacs-fu имеет хорошее представление обо всем: http://emacs-fu.blogspot.com/2011/09/finding-just-about-anything.html
Ответ 8
- Моя любимая функция для этого -
helm-mini
который является частью helm.
Как и другие функции управления, это позволяет постепенно сужать выбор. Он также ищет ваши недавно посещенные буферы, что является действительно хорошим способом повторно открыть буфер. Поначалу Helm может показаться немного удивительным, и, как новый пользователь Emacs, я нахожу это ошеломляющим и предпочел ido
или ibuffer
которые были предложены в других ответах. Но теперь я абсолютно люблю это и использую это все время для бесчисленных вещей.
- Что-то, что я понял случайно и что может быть полезным:
mouse-buffer-menu
по умолчанию привязан к <C-mouse-1>
(управляющая клавиша + щелчок левой кнопкой мыши) и открывает всплывающее окно со списком текущих буферов.