所有
我正在寻找一种方法来在多个窗口中切换缓冲区,类似于其他IDE。让我们说我将我的框架分成两个窗口(C-x 3)
。我想在左侧窗口中处理.c files
的缓冲区,在右侧窗口处理.h files
。我正在寻找一种方法将缓冲区列表耦合到特定窗口,并循环缓冲区仅属于当前窗口。因此,如果我正在编辑右侧的.h file
,并按下一个组合键,我会得到下一个.h file
。
感谢您的任何建议, 亚诺什
答案 0 :(得分:1)
您可以使用ff-find-other-file
。带前缀参数
C-u ,它会打开另一个窗口。
至于你获取下一个.h
文件的想法,你只是限制
尝试将IDE中的坏主意带入Emacs。
使用projectile
或ido-switch-buffer
或helm-buffers-list
:这些
工具可以一次管理数百个文件,而“获取下一个文件”的方法
(即标签)在20左右失败。
答案 1 :(得分:1)
我使用buffer-stack
(可通过MELPA获得)来做类似的事情。 buffer-stack
允许您以非常灵活的方式在缓冲区之间循环(它记住您最近使用的缓冲区,并且每帧使用单独的堆栈)。
您可以为缓冲切换命令添加过滤功能。因此,您可以添加一个过滤器函数,仅考虑文件名扩展名与当前文件名相同的缓冲区。我使用过滤功能在相同模式的缓冲区之间切换。这是一个示例,显示我的键绑定按当前模式切换过滤,并切换到直接缓冲区。根据文件扩展名添加另一个过滤器很容易:
(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)))