每个窗口的emacs开关缓冲区

每个窗口的emacs开关缓冲区,emacs,Emacs,全部, 我正在寻找一种在多个窗口中切换缓冲区的方法,类似于其他IDE。假设我把我的框架分成两个窗口(C-x3)。我希望始终在左侧窗口中处理.c文件的缓冲区,并在右侧处理.h文件。我正在寻找一种将缓冲区列表耦合到特定窗口的方法,并循环只属于当前窗口的缓冲区。因此,如果我正在编辑右侧的.h文件,然后按组合键,我将得到下一个.h文件 谢谢你的建议, Janos您可以使用ff查找其他文件。带前缀参数 C-u,它将打开另一个窗口 至于获取下一个.h文件的想法,您只是在限制 通过尝试将IDE中的一个坏主意引

全部,

我正在寻找一种在多个窗口中切换缓冲区的方法,类似于其他IDE。假设我把我的框架分成两个窗口
(C-x3)
。我希望始终在左侧窗口中处理
.c文件
的缓冲区,并在右侧处理
.h文件
。我正在寻找一种将缓冲区列表耦合到特定窗口的方法,并循环只属于当前窗口的缓冲区。因此,如果我正在编辑右侧的
.h文件
,然后按组合键,我将得到下一个
.h文件

谢谢你的建议,
Janos

您可以使用
ff查找其他文件
。带前缀参数 C-u,它将打开另一个窗口

至于获取下一个
.h
文件的想法,您只是在限制 通过尝试将IDE中的一个坏主意引入Emacs,您自己也可以做到这一点。 使用
投射物
ido开关缓冲区
舵缓冲区列表
:这些 工具一次可以管理数百个文件,而“获取下一个文件”的方法
(即制表符)大约20次失败。

我使用
缓冲堆栈(可通过MELPA获得)进行类似操作<代码>缓冲区堆栈
允许您以非常灵活的方式在缓冲区之间循环(它记住您最近使用的缓冲区,并且每帧使用单独的堆栈)

您可以向缓冲区切换命令添加筛选函数。因此,您可以添加一个筛选函数,只考虑文件名扩展名与当前文件名扩展名相同的缓冲区。我使用过滤功能在相同模式的缓冲区之间切换。这里是一个例子,显示了我的keybindings通过当前模式切换过滤,以及切换到dired缓冲区。根据文件扩展名添加另一个筛选器很容易:

(defmacro command (&rest body)
  `(lambda ()
     (interactive)
     ,@body))

(defvar buffer-stack-mode)

(defun buffer-op-by-mode (op &optional mode)
  (let ((buffer-stack-filter 'buffer-stack-filter-by-mode)
        (buffer-stack-mode (or mode major-mode)))
    (funcall op)))

(defun buffer-stack-filter-by-mode (buffer)
  (with-current-buffer buffer
    (equal major-mode buffer-stack-mode)))

(global-set-key [(meta kp-7)]
                (command (buffer-op-by-mode 'buffer-stack-up)))
(global-set-key [(meta kp-9)]
                (command (buffer-op-by-mode 'buffer-stack-down)))
(global-set-key [(meta kp-3)]
                (command (buffer-op-by-mode 'buffer-stack-down 'dired-mode)))
(global-set-key [(meta kp-1)]
                (command (buffer-op-by-mode 'buffer-stack-up 'dired-mode)))