如何在焦点位于缓冲区列表中的其他窗口中实时显示缓冲区内容
如果我理解了正确的问题,答案只是在缓冲区菜单中使用C-o
。显示您在另一个窗口中所在行的缓冲区,但不会选择该缓冲区。也就是说,它不会将输入焦点移动到该缓冲区的窗口。缓冲区列表保留了输入焦点,因此您可以在不同的行上继续使用C-o
,以显示不同的缓冲区。
如果您的意思是一个Emacs窗口,当您说“frame”时,请参阅上文。即使缓冲区位于不同的框架上也是如此,有以下警告:某些窗口管理器(包括MS Windows)会将输入焦点更改为创建的新框架。因此,例如,如果您有非nil
pop-up-frames
(以便使用单独的框架显示缓冲区),并且您选择显示的缓冲区(使用C-o
)尚未显示在其他某个框架中,则显示它不仅为它创造了一个新的框架,而且将焦点转移到了新的框架上。如果缓冲区在另一个帧中已经可见,那么C-o
只会提高该帧。
缓冲区列表显示中当前没有键限制,以便(a)将光标向下或向上移动到下一个或上一个缓冲区行,并(b)调用显示在目标缓冲线。但是你可以很容易地定义这样的命令,并将其绑定到一个键:
(defun show-next (arg)
"Show next line's buffer in another window."
(interactive "p")
(next-line arg)
(Buffer-menu-switch-other-window))
(defun show-previous (arg)
"Show previous line's buffer in another window."
(interactive "p")
(previous-line arg)
(Buffer-menu-switch-other-window))
(define-key Buffer-menu-mode-map "\M-n" 'show-next)
(define-key Buffer-menu-mode-map "\M-p" 'show-previous)
这里是我的原型在dired缓冲区此功能。它在访问后杀死一个缓冲区。
这是我喜欢ranger文件管理器的一个功能,它在探索目录时非常方便。
(setq show-next-current-buffer nil)
(defun show-next()
(interactive)
(next-line 1)
(dired-find-file-other-window)
(if show-next-current-buffer (kill-buffer show-next-current-buffer))
(setq show-next-current-buffer (current-buffer))
(other-window 1)
)
(defun show-previous()
(interactive)
(previous-line 1)
(dired-find-file-other-window)
(if show-next-current-buffer (kill-buffer show-next-current-buffer))
(setq show-next-current-buffer (current-buffer))
(other-window 1)
)
(define-key dired-mode-map "n" 'show-next)
(define-key dired-mode-map "p" 'show-previous)
编辑:我写了一个小的方式来启用/禁用轻松此功能。请参阅https://gitlab.com/emacs-stuff/my-elisp/blob/master/dired-show.el,并将其融入您的需求。
这在dired模式下非常有用。 – godblessfq 2014-10-17 18:10:30
我不知道一个简单的解决方案,因为目标框架需要被识别为可能有两个以上的框架。我想可能有一个条件,如果只有两个帧存在,然后使用其他帧。这是一个控制显示帧缓冲区的复杂方法的链接 - 我在过去一年左右成功地使用了这种方法:http://*.com/a/18371427/2112489 – lawlist 2014-10-16 18:16:43
上述评论假定原始海报在经验丰富的Emacs用户所使用的相同环境中使用术语“frame”。如果原始海报的含义是使用术语“窗口”作为经验丰富的Emacs用户理解术语的含义,那么需要澄清问题。演示差异的例子包括但不限于以下功能:'find-file-other-window'; '找到文件 - 其他 - frame'; '交换机到缓冲另一window'; '交换机到缓冲另一frame'。 – lawlist 2014-10-16 18:25:46
注意:'buffer-menu-mode'具有工具栏条目,其中包括各种功能以处理缓冲区列表中显示的文件 - 例如'o' - *在其他窗口中选择*。对于喜欢禁用/不可见工具栏的用户,以下键盘和鼠标快捷键组合会显示类似于工具栏的弹出菜单:'C-down-mouse-3' – lawlist 2014-10-16 18:43:37