大家好,
我正在寻找一种类似其他IDE的“在多个窗口中切换缓冲区”的方法。比如说,我将框架分割成两个窗口(C-x 3)。我想让.c文件的缓冲区总是在左侧窗口,而.h文件的缓冲区在右侧。我正在寻找一种将缓冲区列表连接到特定窗口并仅循环属于当前窗口的缓冲区的方法。因此,如果我正在编辑右侧的.h文件,并按下一个键组合,则会获得下一个.h文件。
谢谢任何建议, Janos
大家好,
我正在寻找一种类似其他IDE的“在多个窗口中切换缓冲区”的方法。比如说,我将框架分割成两个窗口(C-x 3)。我想让.c文件的缓冲区总是在左侧窗口,而.h文件的缓冲区在右侧。我正在寻找一种将缓冲区列表连接到特定窗口并仅循环属于当前窗口的缓冲区的方法。因此,如果我正在编辑右侧的.h文件,并按下一个键组合,则会获得下一个.h文件。
谢谢任何建议, Janos
ff-find-other-file
。使用前缀参数C-u,它将打开另一个窗口。.h
文件的想法,你只是试图把从IDE中带来的坏主意限制在Emacs中。
使用projectile
或ido-switch-buffer
或helm-buffers-list
:这些工具可以管理数百个文件,而“获取下一个文件”的方法(即选项卡)在大约20个文件左右失败。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)))