【问题标题】:Emacs - Multiple columns one bufferEmacs - 多列一个缓冲区
【发布时间】:2009-06-09 14:09:43
【问题描述】:

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

C-x 3 (emacs) 和 :vsplit (vim) 非常适合代码的多个单独视图,但我希望它从一列流向另一列(就像报纸中的文本一样)。

【问题讨论】:

  • C-x 3 和 :vsplit 对于代码的多个单独视图非常有用,但我希望它从一列流到另一列(就像报纸上的文字)
  • 谢谢!我爱上了 4-6 列代码查看,我尝试将所有代码格式化为 30-40 个字符,我非常喜欢结果——通过使所有行都变短,而不仅仅是自然短的行,更少的空间被浪费了,我所有的屏幕空间都用于显示文本;此外,代码块变得更加二维,便于视觉理解和结构监督。

标签: emacs


【解决方案1】:

follow-mode。 摘录:

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

【讨论】:

  • 我可以在两个以上的窗口中使用它吗?我可以使用这个有四个窗口吗?
  • 我想知道是否可以以单独的方式编辑同一来源的两列,而不是在两个窗口中拆分。这不是最好的例子,但假设我有一列用于脚本代码,另一列用于 cmets,那么如果我在第二列中,我想按“enter”并在下一行但在第二列中继续。这可以用 Emacs 或其他文本编辑器实现吗?
  • 编辑 long long 函数或方法非常有用。我总是找到这个模式,打开两个缓冲区,自己做,谢谢怀远
【解决方案2】:

我使用这个函数来调用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-margin 设置为0follow-mode 中是有意义的。
【解决方案3】:

Vim 的“Multipager”插件可以通过 VIM 拆分为想要在 Vim 中获得这种行为的人做到这一点。

从 Dr. Chip 的页面获取:http://mysite.verizon.net/astronaut/vim/index.html#MPAGE

文档:http://mysite.verizon.net/astronaut/vim/doc/mpage.txt.html

【讨论】:

  • 但问题是关于 Emacs 而不是 Vim。
【解决方案4】:

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

Documentation here

【讨论】:

  • emacs 也可以做到这一点,如问题中所述,但这不是所要求的。
  • 把它和:scrollbind结合起来,你就在那里。
  • @Kragen -- 执行此操作的方法是: 1. 垂直拆分窗口,因此单个缓冲区在两个窗口中可见 2. 在第二个窗口中滚动,以便第二个窗口中的第一行出现在后面第一个窗口的最后一行,3. 在每个窗口中发出命令:set scrollbind。现在窗口将根据需要一起滚动。 (注意:scrollopt 必须包含 'ver' 选项。)
  • 嗯,确实可以。凉爽的!谢谢!有人应该编写一个 vim 脚本来自动执行此操作。
  • :scrollbind 和 :cursorbind 不做跟随模式的工作!如果您看到 emacs follow-mode,那么您就可以意识到他所说的功能是什么。 follow-mode 更智能一些,您在一个窗口中查看缓冲区的第一部分,并在另一个窗口中查看该文件的其余部分。
【解决方案5】:

快速浏览一下 emacs wiki 并没有像您描述的那样显示模式。但是,写一个应该不会难...您只需要使用 C-x 3 拆分窗口并将另一个窗口中的文本向下移动,并且每当您移动文本时,请执行与其他窗口相同...

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

嗯,也许没那么容易。不过应该还是可以的……

【讨论】:

  • ...所以 Elisp 被添加到了我需要学习的东西列表中 :) 非常感谢 Brian ;)
  • 显然,有人已经这样做了,但是是的,elisp 是一个了不起的工具!
【解决方案6】:

这是 emacs 分割窗口时的默认行为(C-x 3 表示垂直分割) 你得到两列都打开了当前缓冲区

【讨论】:

  • 但在这种情况下,它不在跟随模式。跟随模式将确保每个缓冲区都位于“下一页”,因此您可以通过移动眼睛而不是移动点来阅读缓冲区。
【解决方案7】:

对 C-x 3 使用垂直分割。这会将当前缓冲区分成两列,您可以使用 C-x o 在它们之间切换。

【讨论】:

  • 这不会自动从一列流到另一列。
猜你喜欢
  • 1970-01-01
  • 2010-11-16
  • 2012-08-05
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多