无论帧如何,Emacs都会切换到下一个窗口

时间:2012-07-27 19:08:38

标签: emacs elisp

我希望C-x o命令(下一个窗口)在其他帧中包含窗口以及当前帧中的窗口。

有谁知道如何解决这个问题?我应该使用另一个命令吗?是否有一些elisp魔法片段能够轻松完成?

7 个答案:

答案 0 :(得分:4)

C-x oother-window。要转到其他框架,请使用C-x 5 o other-frame。{/ p>

答案 1 :(得分:1)

不确定这是不是您的意思,但如果您只想cycle through buffers in the buffer list,则无论其如何:

Ctrl x

Ctrl x

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

答案 2 :(得分: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))))

答案 3 :(得分:1)

您必须按 Cx 5 o Ch 才能看到有关使用框架的所有功能。

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

答案 4 :(得分:1)

我使用 ace-jump-mode 的2.0版本。它需要大约两分钟才能理解它是如何工作的,从版本2.0开始它就可以“跳转”到另一个框架。您可以从三个或四个按键在屏幕上实际看到的任何缓冲区/框架/窗口中跳转到任何角色。这很难打败。

无论如何,这是一个巨大的节省时间,因此我建议检查它,因为它非常方便。

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

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

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

答案 5 :(得分:1)

来自C-h f next-window

  

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

     

ALL-FRAMES零或省略意味着考虑WINDOW上的所有窗口   帧,加上迷你缓冲窗口,如果由MINIBUF指定   论点。如果迷你缓冲区计数,请考虑所有窗口   共享该迷你缓冲区的帧。以下非零值   ALL-FRAMES的特殊含义:

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

  •   
  • `visible'表示考虑所有可见帧上的所有窗口。

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

  •   
  • 框架表示仅考虑该框架上的所有窗口。

  •   
     

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

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

(defun my-other-window (count)
  (interactive "p")
  (other-window count t))

答案 6 :(得分:0)

你说“有没有办法在窗口中循环而不管它们在哪个框架?这就是我正在寻找的东西?”

是的,有Icicles

当您使用前缀arg时,您请求的是icicle-select-window命令。如果您总是想要这种行为,那么您可以定义自己的命令,而不使用前缀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来获得你想要的窗口。

(A 窗口名称是其显示缓冲区的名称,但后缀为 [NUMBER]需要使名称唯一。例如,如果你有 两个窗口显示缓冲区*Help*,其中一个窗口将被调用 *Help*[2]用于此命令。)