我想实现一个函数,让我只能通过打开的目录缓冲区循环,并跳过文件或暂存缓冲区。 我会怎么做呢?函数只循环打开的目录
回答
看看的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
在这些缓冲区之间切换。
如果您想要实施一些东西, 看看Buffer-menu-mode
。它已经得到一个切换T为 只显示文件。 然后它只是一个问题,看看它是如何建立的名单 与
(eq major-mode 'dired-mode)
源过滤它是相当小的奇怪665线。
我为此使用缓冲区堆栈。
我写了两个不同的函数使用该包:一个用于在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)))
编辑:
我包括我使用的命令键绑定
Icicles提供了几个方法可以做到这一点的宏。
开始在Dired缓冲和做
C-0 C-x b TAB
C-x b
,然后C-x m +
,然后输入dired-mode
(使用完毕),然后TAB
那些给你只Dired缓冲区作为可用的候选人,然后您可以按名称匹配。 使用箭头键(,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。
- 1. 循环在目录
- 2. Python - 打破外部函数的循环
- 3. 在VimEnter上打开CtrlP只打开目录
- 4. 如何从循环内的函数循环中打破Python
- 5. 如何使用PHP Eval()函数打开和关闭循环?
- 6. msgbox打开时允许函数/循环运行VBA
- 7. 在foreach循环中打破setTimeout函数
- 8. php函数打破foreach循环
- 9. 循环不会打印函数输出
- 10. 活动目录和打开的目录
- 11. OpenFileDialog:打开目录
- 12. 目录被打开
- 13. Emacs打开目录
- 14. php动态打开使用open_dir()函数的多级目录
- 15. 循环目录和保存数据
- 16. window.open打开无限开放循环
- 17. 通过目录循环
- 18. 通过目录循环
- 19. PHP目录循环 - 样式
- 20. 循环目录,删除
- 21. 通过hdfs目录循环
- 22. strcmp只适用于循环的开始
- 23. 在while循环中只打开一次sqlplus连接一次
- 24. Form.ShowDialog在循环中运行时只打开一次
- 25. 打印偶数的循环?
- 26. 确定open()函数是否打开了文件或目录?
- 27. 循环函数bash
- 28. 函数内循环
- 29. BASH:ping函数循环
- 30. 循环jQuery函数
这看起来非常接近您可能要查找的内容 - 将'my-ido-ignore-dired-buffers'设置为'nil',并将其排除在文件之外:http://scottfrazersblog.blogspot.com/ 2010/01/emacs-filtered-buffer-switching.html它甚至包含与您的其他问题有关的字体锁示例的奖金。 – lawlist
你想要一个返回一个列表(或一个函数参数)或交互功能的库函数吗? – seanmcl
我正在寻找一种交互功能,我可以绑定到一个F键,只需在已打开的目录和另一个功能之间切换以在已打开的文件之间切换 – SFbay007