Emacs:如何在不同的窗口上显示具有不同缩放级别的相同文件?

时间:2014-08-06 05:28:32

标签: emacs zooming

您可以使用C-x C- +和C-x C--放大Emacs中的输出。如果我正在访问某个文件,并且此文件同时显示在多个窗口(又名"视图"或"面板"在其他编辑器中),则所有窗口始终显示具有相同缩放级别的相同文件。换句话说,如果我在一个窗口上更改缩放级别,则缩放级别会在显示相同文件的所有其他窗口中更改。我想分别控制每个窗口的缩放级别。

我想要这个功能,因为对于长文件,在使用更大的缩放编辑文件时能够看到文件的整体形状有时很有用。像这样:

http://twimgs.com/ddj/images/article/2012/1012/dup2.gif

我还想看到光标在两个视图上同步移动,这样我就能轻松看到我的位置。

2 个答案:

答案 0 :(得分:3)

Akira,也许你使用的是minimap 1.2或更早版本? 尝试从melpa存储库安装minimap。版本20140201.1209适用于Emacs 24.4.50.1。 Dustin Lacewell从David Engster的原版中重构了它,我发现它效果更好。 安装和加载后,只需使用" M-x minimap-toggle"打开和关闭它。

答案 1 :(得分:1)

只需缩放框架而不是缓冲区。

如果缩放缓冲区(又名文本缩放),则缓冲区在显示的任何位置都具有缩放的大小。但你可以改变一个特定的框架:它的所有窗口。在这种情况下,显示相同缓冲区的其他帧不受影响:您可以在任何地方以任何文本大小显示缓冲区。有关详细信息,请参阅Changing Font Size

zoom-frm.el允许您使用相同的命令缩放缓冲区或帧:zoom-in/out。它是vanilla命令text-scale-adjust的超集替代品,它只放大缓冲区。只需将zoom-in/out绑定到相同的键,就可以了:

(define-key ctl-x-map [(control ?+)] 'zoom-in/out)
(define-key ctl-x-map [(control ?-)] 'zoom-in/out)
(define-key ctl-x-map [(control ?=)] 'zoom-in/out)
(define-key ctl-x-map [(control ?0)] 'zoom-in/out)

此外,我建议使用鼠标绑定(Shift + button-1放大,Control + Shift + button-1缩小):

(global-set-key [S-mouse-1]    'zoom-in)
(global-set-key [C-S-mouse-1]  'zoom-out)
(global-set-key [S-down-mouse-1] nil)

如果你想使用鼠标滚轮进行缩放(同时按下Control),就像在网络浏览器中一样,也可以这样做:

(global-set-key (vector (list 'control mouse-wheel-down-event)) 'zoom-in)
(global-set-key (vector (list 'control mouse-wheel-up-event))   'zoom-out)

图书馆zoom-frm.el需要图书馆frame-cmds.elframe-fns.el。除MELPA之外,所有这些库也可在Emacs Wiki上使用。