Emacs中的缓冲区切换

时间:2011-07-25 08:58:59

标签: emacs buffer

我想模仿Alt-Tab,因为它适用于GTK上的各个窗口,但是在emacs的缓冲区中使用Ctrl-Tab。

所以,例如,如果我在emacs中打开了10个缓冲区,而我现在正在处理两个缓冲区,比如说Buffer1和Buffer2,我现在在Buffer1中,我想让Ctrl-Tab带我去Buffer2 ,再次按Ctrl-Tab,返回Buffer1。

如果我需要转到Buffer3或Buffer4等,按Tab键时按住Ctrl键。

这有意义吗?如果是这样,请告诉我如何做到这一点。

5 个答案:

答案 0 :(得分:6)

你目前在使用什么?

但我认为

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

应该做你所描述的。

正如jaybee评论的那样,它可能比Firefox更有用。但我建议ido-switch-buffer

这也可能是有意义的:http://www.emacswiki.org/emacs/ControlTABbufferCycling

答案 1 :(得分:3)

我认为 swbuff 效果很好。请参阅http://www.emacswiki.org/emacs/SwBuff

来自我的初始文件:

(require 'swbuff)
(global-set-key [(control tab)] 'swbuff-switch-to-next-buffer)

答案 2 :(得分:2)

在两个最近的缓冲区之间切换

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

答案 3 :(得分:2)

我很满意这个设置:

(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-mode)时,这很有效 (也许右手拿一杯咖啡)。

答案 4 :(得分:2)

听起来你想尝试iflipb

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