没有长时间使用Emacs(v23,windows)并且刚刚发现 M-x ediff 。太棒了。 虽然我不喜欢它在一个单独的框架/窗口中打开它的帮助/导航的事实,这意味着如果我失去对该窗口的焦点,单键快捷键不起作用。
例如,当我按?来展开窗口时,它会在当前窗口的顶部移动,所以我必须拿起鼠标并将其移动到另一个屏幕。然后,如果我失去焦点到该窗口并按 p / n / j 或任何其他键来处理diff,它会将其插入我的文件。所以我必须撤消,抓住鼠标,聚焦到其他窗口,然后重复。
有没有办法配置这些选项以在分组中显示?
答案 0 :(得分:29)
我不知道该怎么做,但通常很容易用Emacs学习。首先我询问了ediff自定义:
M-x customize-apropos
ediff
我看到有一种叫做 Ediff Window Setup Function 的东西,它取值多帧,单帧或其他功能即可。我的设置为多帧并将其更改为单帧,并将其保存以供将来的会话使用。和 Voila!正如他们所说的那样。
答案 1 :(得分:21)
简单地:
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
M-x describe-variable ediff-window-setup-function将启发你 进一步
作为参考,我的ediff定制非常简单:
(if (locate-library "ediff")
(progn
(autoload 'ediff-files "ediff")
(autoload 'ediff-buffers "ediff")
(eval-after-load "ediff" '(progn
(message "doing ediff customisation")
(setq diff-switches "-u"
ediff-custom-diff-options "-U3"
ediff-split-window-function 'split-window-horizontally
ediff-window-setup-function 'ediff-setup-windows-plain)
(add-hook 'ediff-startup-hook 'ediff-toggle-wide-display)
(add-hook 'ediff-cleanup-hook 'ediff-toggle-wide-display)
(add-hook 'ediff-suspend-hook 'ediff-toggle-wide-display)))))
答案 2 :(得分:15)
Ediff用户手册中的 Window and Frame Configuration 章节
以下变量控制方式 窗口设置:
ediff-window-setup-function
多帧设置由
ediff-setup-windows-multiframe
完成 function,这是默认值 窗口显示。普通的设置, 所有窗户总是在那里 一帧,完成ediff-setup-windows-plain
,是 非窗口显示的默认值 (或在xterm窗口中)。事实上, 在Emacs下,你可以自由切换 通过执行这两个设置之间 命令ediff-toggle-multiframe
使用菜单栏的Minibuffer。
答案 3 :(得分:7)
(custom-set-variables
...
'(ediff-window-setup-function (quote ediff-setup-windows-plain))
...)
不是说你会以这种方式设置变量,但它可以让你知道这些事情:
ediff-window-setup-function
ediff-setup-windows-plain
您可以从自定义配置变量:M-x customize-group RET ediff-window
Ediff Window设置功能:菜单单帧
答案 4 :(得分:4)
注意:您可以使用 M-x other-frame 来避免使用鼠标返回ediff控制窗口。也见于 C-x 5 o 。
答案 5 :(得分:0)
这不再适用于2017年gnu emacs(24.5,25.2,2017)的Windows
(setq ediff-window-setup-function 'ediff-setup-windows-plain) ; stopped working
甚至
ediff-toggle-multiframe ; no longer has any effect now.
它适用于windows上的emacs22.3,因此我使用了2008年以来的旧版emacs!