Переключение буфера в Emacs - PullRequest
8 голосов
/ 25 июля 2011

Я хотел бы эмулировать Alt-Tab, так как он работает с отдельными окнами в GTK, но с Ctrl-Tab в буферах в emacs.

Так, например, если у меня в emacs открыто десять буферов, и я сейчас работаю над двумя, скажем, Buffer1 и Buffer2, а я сейчас в Buffer1, я бы хотел, чтобы Ctrl-Tab перенес меня в Buffer2 и, снова нажав Ctrl-Tab, вернитесь к Buffer1.

Если мне нужно перейти в Buffer3 или Buffer4 и т. Д., Я удерживаю нажатой клавишу Ctrl, пока нажимаю клавишу Tab.

Имеет ли это смысл? Если да, пожалуйста, скажите мне, как я могу это сделать.

Ответы [ 5 ]

6 голосов
/ 25 июля 2011

Что вы используете в настоящее время?

Но я думаю

(global-set-key (kbd "C-<tab>") 'next-buffer)
(global-set-key (kbd "C-S-<tab>") 'previous-buffer)

должен делать то, что вы описываете.

Как комментирует Джейби, это может быть намного меньшеполезнее, чем, скажем, в Firefox.Но я бы порекомендовал ido-switch-buffer.

Это также может представлять интерес: http://www.emacswiki.org/emacs/ControlTABbufferCycling

3 голосов
/ 25 июля 2011

Я думаю swbuff работает хорошо.См. http://www.emacswiki.org/emacs/SwBuff.

Из моего файла инициализации:

(require 'swbuff)
(global-set-key [(control tab)] 'swbuff-switch-to-next-buffer)
2 голосов
/ 27 мая 2017

Похоже, вы хотели бы попробовать iflipb :

(require 'iflipb)
(global-set-key (kbd "<C-tab>") 'iflipb-next-buffer)
(global-set-key (kbd "<C-S-iso-lefttab>") 'iflipb-previous-buffer)
2 голосов
/ 07 декабря 2012

Я очень доволен этой настройкой:

(defun next-line-cycle ()
  "Go to next line. Go to first line if end is reached."
  (interactive)
  (revert-buffer)
  (if (= (line-number-at-pos) (count-lines (window-start) (window-end)))
      (backward-page)
    (forward-line)))
(defun ctrltab ()
  "List buffers and give it focus"
  (interactive)
  (if (string= "*Buffer List*" (buffer-name))
      (next-line-cycle)
    (progn (list-buffers)
       (switch-to-buffer "*Buffer List*")
       (delete-other-windows)
       (forward-line))))
(global-set-key [C-tab] 'ctrltab)

Шаблон использования:

* hold ctrl, press <tab> once, keep holding ctrl
* press 'm' to view currently selected buffer
* press <tab>(possibly more times) to select next buffer

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

2 голосов
/ 25 июля 2011

Переключение между двумя самыми последними буферами

(global-set-key [\C-tab]
        (lambda () (interactive)
          (switch-to-buffer (other-buffer))))
...