我想实现一个让我只通过打开的目录缓冲区循环的函数,并跳过文件或暂存缓冲区。 我该怎么做呢?
答案 0 :(得分:1)
查看tabbar模式 - 您可以将组定义为您想要的任何内容(例如dired
),并在具有tabbar-backward-group
和tabbar-forward-group
的组之间循环:
http://www.emacswiki.org/emacs/TabBarMode
tabbar-buffer-list-function
可用于进一步定义是否显示(或隐藏)某些文件。
tabbar-buffer-groups
是默认组,可以使用setq
修改为您想要的任何内容。如果要创建其他分组方法,可以使用tabbar-buffer-groups-function
。
如果dired
是一个群组,那么您可以使用(setq tabbar-cycle-scope 'tabs)
tabbar-backward
和tabbar-forward
来切换这些缓冲区。
答案 1 :(得分:0)
如果您想要实施某些内容,
看看Buffer-menu-mode
。它已经有了一个切换 T
仅显示文件。
然后,只需要了解它如何构建列表
并用
(eq major-mode 'dired-mode)
奇怪的是665行的来源非常小。
答案 2 :(得分:0)
我使用缓冲区堆栈。
我编写了两个使用该包的不同函数:一个用于在dired缓冲区之间切换,另一个用于在相同模式的缓冲区之间切换。我强烈地使用它们。我就是这样做的:
;; For shorter keybindings
(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)))
修改强>
我包含用于命令键绑定的宏
答案 3 :(得分:0)
Icicles 提供了几种方法。
从Dired缓冲区开始,然后执行C-0 C-x b TAB
C-x b
,然后C-x m +
,然后输入dired-mode
(使用完成),然后TAB
那些只为您提供Dired缓冲区作为可用候选项,然后您可以按名称进行匹配。
您可以使用箭头键(C-up
,C-down
)在与输入匹配的缓冲区之间循环。使用RET
或C-g
结束。
前缀arg 0
表示候选者是与当前缓冲区处于相同模式的缓冲区 - 因此是上面的第一个选项。
完成后,C-x C-m +
会提示您输入某个模式,然后过滤掉所有模式与您输入的模式不同或派生的候选人(在本例中为dired-mode
) ---因此是上面的第二个选项。
C-x b
以Icicle
模式绑定到icicle-buffer
。如果要在不同窗口中打开缓冲区,请使用C-x 4 b
(icicle-buffer-other-window
)。
有关详细信息,请参阅http://www.emacswiki.org/emacs/Icicles_-_Buffer-Name_Input。