6

我希望 Cx o 命令(下一个窗口)包括其他框架中的窗口以及当前框架中的窗口。

有谁知道如何解决这个问题?我应该使用另一个命令吗?是否有一些 elisp 魔术片段可以轻松做到这一点?

4

7 回答 7

4

C-x oother-window。去另一个框架使用C-x 5 o它是other-frame

于 2012-07-27T19:20:21.397 回答
1

来自C-h f next-window

(下一个窗口和可选窗口 MINIBUF ALL-FRAMES)...

ALL-FRAMES nil 或省略意味着考虑 WINDOW 框架上的所有窗口,加上由 MINIBUF 参数指定的 minibuffer 窗口。如果 minibuffer 很重要,请考虑共享该 minibuffer 的所有帧上的所有窗口。以下 ALL-FRAMES 的非零值具有特殊含义:

  • t 表示考虑所有现有框架上的所有窗口。

  • “可见”意味着考虑所有可见框架上的所有窗口。

  • 0(数字零)表示考虑所有可见和图标化框架上的所有窗口。

  • 框架意味着只考虑该框架上的所有窗口。

任何其他都意味着考虑WINDOW 框架上的所有窗口,而不考虑其他窗口。

有点讽刺的是,other-window它也支持这一点,因为它使用next-window. 不幸的是,我不知道以交互方式传递非数字参数的方法,但是一个简单的函数应该可以解决问题:

(defun my-other-window (count)
  (interactive "p")
  (other-window count t))
于 2012-07-28T23:02:29.467 回答
1

这可以是第一个近似值。
http://www.gnu.org/software/emacs/manual/html_node/elisp/Cyclic-Window-Ordering.html
http://www.gnu.org/software/emacs/manual/html_node/elisp/Frames.html

other-window有一个参数来控制它如何处理帧。

(global-set-key (kbd "C-x o")  (lambda ()
                 (interactive)
                 (other-window 1 t)
         (let ((nframe (window-frame (selected-window))))
           (select-frame-set-input-focus nframe)
           (make-frame-visible nframe))))
于 2012-07-27T20:09:05.267 回答
1

我使用ace-jump-mode的 2.0 版本。了解它的工作原理大约需要两分钟,并且从 2.0 版开始,它允许“跳转”到另一个帧。您可以从任何缓冲区/帧/窗口中跳转到您在屏幕上实际看到的任何字符,只需按三到四次按键即可。很难打败。

无论如何,这可以节省大量时间,所以我建议您检查一下,因为它真的很方便。

http://www.emacswiki.org/emacs/AceJump

还有“Emacs Rocks!第 10 集:跳跃”两分钟的截屏视频,展示了它的实际效果:

http://www.youtube.com/watch?v=UZkpmegySnc

于 2012-07-28T20:20:40.247 回答
1

不确定这是否是您的意思,但如果您只想循环浏览缓冲区列表中的缓冲区,而不管帧:

Ctrl x→</kbd>

Ctrl x←</kbd>

它们分别绑定到 (next-buffer) 和 (prev-buffer)。

于 2012-07-27T19:24:47.553 回答
1

您必须按下C-x 5 o C-h才能查看有关使用框架的所有功能。

其中一些功能是其他框架。

于 2012-07-27T20:40:14.237 回答
0

你说“有没有办法在窗口中循环,不管它们在哪个框架中?这真的是我要找的吗?”

是的,有,有冰柱

您要求的是icicle-select-window使用前缀 arg 时命令执行的操作。如果您始终想要这种行为,您可以定义自己的命令来执行此操作而无需前缀 arg:

 (defun my-select-window ()
   "Select window by name.  Windows of all visible frames are candidates."
   (interactive)
   (let ((current-prefix-arg  1)) (icicle-select-window)))

系统会提示您输入窗口名称。但是,如果您只是想循环,而不是通过键入部分名称来缩小候选范围,那么只需使用C-down来获取您想要的窗口。

窗口名称是其显示缓冲区的名称,但根据需要添加后缀[NUMBER],以使名称唯一。例如,如果您有两个显示缓冲区*Help*的窗口,则将调用其中一个窗口以 *Help*[2]与此命令一起使用。)

于 2013-10-28T01:41:15.190 回答