Подтвердить что ты не робот

Как я могу легче переключаться между буферами в Emacs?

Недавно я начал использовать emacs, и мне нравится использовать его по большей части. Единственное, что мне не нравится, - это переключение между буферами. У меня часто есть несколько буферов, и я устал от использования C-x b и C-x C-b, есть ли пакеты, которые облегчают переключение между буферами? Я просмотрел emacs wiki при переключении буферов, и я был бы признателен за понимание/отзывы о том, что они используют/наслаждаются. Благодарю.

4b9b3361

Ответ 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:

Мой инструментарий состоит из ibuffer, windmove + framemove, winner-mode и пользовательской привязки, чтобы сделать C-x left/right и C-c left/right меньше проблем.

Ответ 6

Я отобразил список "§" -key в "buffer-list", и я считаю его очень эффективным.

Ответ 8

  • Моя любимая функция для этого - helm-mini который является частью helm.

Как и другие функции управления, это позволяет постепенно сужать выбор. Он также ищет ваши недавно посещенные буферы, что является действительно хорошим способом повторно открыть буфер. Поначалу Helm может показаться немного удивительным, и, как новый пользователь Emacs, я нахожу это ошеломляющим и предпочел ido или ibuffer которые были предложены в других ответах. Но теперь я абсолютно люблю это и использую это все время для бесчисленных вещей.

  • Что-то, что я понял случайно и что может быть полезным:

mouse-buffer-menu по умолчанию привязан к <C-mouse-1> (управляющая клавиша + щелчок левой кнопкой мыши) и открывает всплывающее окно со списком текущих буферов.