Emacs-多列一个缓冲区


165

我正在尝试编辑一些汇编代码,这些代码通常会格式化成很长但很薄的清单。我希望能够使用我拥有的一些英亩水平空间,并一次在屏幕上看到更多代码。有没有一种方法可以让Emacs(或者实际上是另一个编辑器)向我显示多个都指向同一缓冲区的列?

Cx 3(emacs)和:vsplit(vim)非常适合在代码中使用多个单独的视图,但是我希望它从一列流向另一列(例如报纸上的文本)。


1
Cx 3和:vsplit非常适合在代码中使用多个单独的视图,但是我希望它从一列流向另一列(例如报纸上的文本)
user119857 2009年

1
谢谢!我爱上了4-6列代码查看,我尝试将所有代码格式化为30-40个字符,我非常喜欢结果-通过使所有行都短而不仅仅是自然短的行,减少了空间浪费了,我所有的屏幕空间都用来显示文本;而且,代码块变得更加二维,从而简化了视觉理解和结构监督。
埃里克·卡普伦

Answers:


248

请参阅跟随模式。摘抄:

跟随模式是一个次要模式,它使两个窗口(都显示相同的缓冲区)滚动为一个高大的“虚拟窗口”。要使用“跟随”模式,请转到只有一个窗口的框架,使用Cx 3将其拆分为两个并排的窗口,然后键入“ Mx跟随”模式。从那时起,您可以在两个窗口中的任何一个中编辑缓冲区,或滚动其中一个。紧随其后的是另一个窗口。在“跟随”模式下,如果将点移到一个窗口中可见的部分之外,再移入另一窗口中可见的部分,则将选择另一个窗口-再次将两个窗口视为一个大窗口的一部分。

3
我可以在两个以上的窗口中使用它吗?我可以使用四个窗口吗?
Yktula'4

我想知道是否有可能以一种单独的方式而不是拆分成两个窗口来编辑同一源的两列。这不是最好的示例,但是想象一下,我在脚本代码中有一列,在注释中有另一列,那么如果我在第二列中,我想按“输入”并在第二行中继续下一行。Emacs或其他文本编辑器有可能吗?
sw。

编辑long long函数或方法非常有用。我总是会找到这种模式并打开两个缓冲区,然后自己做,谢谢huaiyuan
Yuan He

17

我使用此函数来调用follow-mode,尽管它需要针对不同的屏幕尺寸进行自定义:

;;; I want a key to open the current buffer all over the screen.
(defun all-over-the-screen ()
  (interactive)
  (delete-other-windows)
  (split-window-horizontally)
  (split-window-horizontally)
  (balance-windows)
  (follow-mode t))

加1可以单独指出(天窗)!我想虽然您可以使其分裂参数次数,并使该函数具有交互性。另外,scroll-margin0中将设置为有意义follow-mode
埃里克·卡普伦


2

Vim可以使用:vsplit- 来做到这一点,并且您可以在多个“窗口”(实际上是单个“窗口”中的各个部分)中打开相同的缓冲区。

这里的文件


3
正如问题中提到的那样,emacs也可以做到这一点,但这不是要问的。
justinhj 2009年

1
将其与结合在一起:scrollbind,您就在那里。
bastibe

@Kragen-执行此操作的方法是:1.垂直分割窗口,以便在两个窗口中看到单个缓冲区2.在第二个窗口中滚动,以便第二个窗口中的第一行在第一个窗口中的最后一行之后,3。:set scrollbind在每个窗口中发出命令。现在,窗口将根据需要一起滚动。(注意:scrollopt必须包含“ ver”选项。)
Herbert Sitz 2011年

嗯,这确实有点工作。凉!谢谢!有人应该编写一个vim脚本来自动执行此操作。
Kragen Javier Sitaker '10

-1

快速浏览emacs Wiki并没有显示您所描述的模式。然而,它不应该是辛苦写一个...你只需要到窗口CX 3分裂和移动在其他窗口下的文本,当你移动文本,做同样的其他窗口。 ..

当您到达缓冲区的底部时,可能会出现问题,是否要使光标立即转到顶部的另一个窗口?

嗯,也许不是那么容易。但这应该仍然可行...


1
...因此Elisp被添加到“我需要学习的列表”中:)非常感谢Brian;)
user119857 2009年

显然,有人已经做到了,但是是的,elisp是一个了不起的工具!
Brian Postow

-5

这是emacs拆分窗口时的默认行为(垂直拆分为Cx 3),您会得到两列均打开了当前缓冲区的列


1
但是在那种情况下,它不是处于跟随模式。跟随模式将确保每个缓冲区都位于“下一页”,因此您可以通过移动眼睛而不是移动点来读取缓冲区。
jrockway 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.