簡體   English   中英

每個窗口的emacs開關緩沖區

[英]emacs switch buffer per window

所有,

我正在尋找一種在多個窗口中切換緩沖區的方法,類似於其他IDE。 假設我將框架分成兩個窗口(Cx 3) 我想在左側窗口處理.c files緩沖區,在右側處理.h files 我正在尋找一種方法將緩沖區列表耦合到特定窗口,並循環緩沖區僅屬於當前窗口。 因此,如果我正在編輯右側的.h file ,並按下一個組合鍵,我會得到下一個.h file

感謝任何建議,Janos

您可以使用ff-find-other-file 使用前綴參數Cu ,它將打開另一個窗口。

至於你獲得下一個.h文件的想法,你只是試圖將一個壞主意從IDE帶入Emacs來限制自己。 使用projectileido-switch-bufferhelm-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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM