我想實現一個函數,讓我只能通過打開的目錄緩衝區循環,並跳過文件或暫存緩衝區。 我會怎麼做呢?函數只循環打開的目錄
回答
看看的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. 只讀打開目錄在vim
- 2. 循環在目錄
- 3. Python - 打破外部函數的循環
- 4. 在VimEnter上打開CtrlP只打開目錄
- 5. 如何從循環內的函數循環中打破Python
- 6. 用於循環的PHP函數。不打印循環
- 7. msgbox打開時允許函數/循環運行VBA
- 8. 如何使用PHP Eval()函數打開和關閉循環?
- 9. 活動目錄和打開的目錄
- 10. 在foreach循環中打破setTimeout函數
- 11. 循環不會打印函數輸出
- 12. 如何使用函數打破循環
- 13. php函數打破foreach循環
- 14. 目錄被打開
- 15. OpenFileDialog:打開目錄
- 16. Emacs打開目錄
- 17. php動態打開使用open_dir()函數的多級目錄
- 18. Python - 通過循環訪問目錄打開FabIO模塊中的圖像
- 19. 循環目錄和保存數據
- 20. window.open打開無限開放循環
- 21. 通過hdfs目錄循環
- 22. 循環目錄,刪除
- 23. 通過目錄循環
- 24. PHP目錄循環 - 樣式
- 25. 通過目錄循環
- 26. strcmp只適用於循環的開始
- 27. OS X的bash For循環只處理一個目錄
- 28. Form.ShowDialog在循環中運行時只打開一次
- 29. 在while循環中只打開一次sqlplus連接一次
- 30. 確定open()函數是否打開了文件或目錄?
這看起來非常接近您可能要查找的內容 - 將'my-ido-ignore-dired-buffers'設置爲'nil',並將其排除在文件之外:http://scottfrazersblog.blogspot.com/ 2010/01/emacs-filtered-buffer-switching.html它甚至包含與您的其他問題有關的字體鎖示例的獎金。 – lawlist
你想要一個返回一個列表(或一個函數參數)或交互功能的庫函數嗎? – seanmcl
我正在尋找一種交互功能,我可以綁定到一個F鍵,只需在已打開的目錄和另一個功能之間切換以在已打開的文件之間切換 – SFbay007