窗格和缓冲区管理

多窗格

表 25.9. Emacs 窗格

C-x 2 M-x split-window-vertically 分隔出两个垂直窗格,水平分隔线
C-x 3 M-x split-window-horizontally 分隔出两个水平窗格,垂直分隔线
C-x 1 M-x delete-other-window 只保留当前窗格
ESC ESC ESC M-x keyboard-escape-quit 只保留当前窗格
C-x 0 M-x delete-window 关闭当前窗格
C-x o M-x other-window 在下一个窗格中激活光标
C-M-v M-x scroll-other-window 向下卷动下一个窗格,使用负参数可以向上卷动

  • 下一个窗格: 垂直分隔,则先左后右;水平分隔,则先上后下。如果窗格还有子窗格,则先遍历其子窗格后,再遍历其它窗格,以此递归。

多缓冲区

Emacs 中,打开新的缓冲区,原有缓冲区并不会关闭

表 25.10. Emacs 缓冲区

C-x C-b M-x list-buffers 查看缓冲区列表
C-x b M-x switch-to-buffer 切换到其它缓冲区
C-x k M-x kill-buffer 关闭当前缓冲区

  • 切换到其它缓冲区时,默认上一次使用的缓冲区(可以用 TAB 补全)
  • 使用多窗格时,缓冲区操作只对当前窗格有效
  • 建议使用 ibuffer.el 这个扩展。 Emacs 自带,在配置文件中添加如下语句

    ;;========== ibuffer
    (require 'ibuffer)
    (global-set-key ( kbd "C-x C-b ")' ibuffer)   
  • 另一个缓冲区列表的扩展(Emacs 自带)

    ;;CRM bufer list
    (global-set-key "\C-x\C-b" 'electric-buffer-list)