没有长时间使用Emacs(v23,windows)并且刚刚发现M-x ediff.太棒了.虽然我不想热衷于它在一个单独的框架/窗口中打开它的帮助/导航,这意味着如果我失去对该窗口的焦点,单键快捷键不起作用.
例如,当我按下?以展开窗口时,它会移动到当前窗口的顶部,因此我必须拿起鼠标并将其移动到另一个屏幕.然后,如果我将焦点丢失到该窗口并按p/ n/ j或任何其他键来处理diff,它会将其插入到我的文档中.所以我必须撤消,抓住鼠标,聚焦到其他窗口,然后重复.
有没有办法配置这些选项以显示拆分?
我不知道该怎么做,但通常很容易用Emacs学习.首先我询问了ediff自定义:
M-x customize-apropos ediff
我看到有一种称为Ediff Window Setup Function的东西,它取值Multi Frame,Single Frame或Other Function.我被设置为多帧并将其更改为单帧并将其保存以供将来的会话使用.还有瞧!正如他们在某处说的那样.
只是:
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
Mx 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)))))
从Ediff用户手册中的窗口和框架配置一章:
以下变量控制窗口的设置方式:
ediff-window-setup-function
多帧设置由该
ediff-setup-windows-multiframe
功能完成,这是窗口显示的默认设置.普通设置是一个所有窗口总是在一个帧ediff-setup-windows-plain
中的设置,这是非窗口显示(或在xterm窗口中)的默认设置.实际上,在Emacs下,您可以ediff-toggle-multiframe
使用菜单栏的Minibuffer 执行命令,在这两个设置之间自由切换.
(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窗口设置功能:菜单单帧