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