169
votes

I'm trying to edit some assembly code which tends to be formatted in long but thin listings. I'd like to be able to use some of the acres of horizontal space I have and see more code on-screen at one time. Is there a method for getting Emacs (or indeed another editor) to show me multiple columns all pointing to the same buffer?

C-x 3 (emacs) and :vsplit (vim) are great for multiple separate views into the code, but I'd like it to flow from one column to the other (like text in a newspaper).

7
C-x 3 and :vsplit are great for multiple separate views into the code, but I'd like it to flow from one column to the other (like text in a newspaper) - user119857
Thanks! I fell in love with 4-6 column code viewing that I tried formatting all my code to 30-40 chars, and I'm loving the result extremely — by making all lines short, not just the naturally short ones, a lot less space is wasted, and all my screen space is used to display text; also, code blocks become more 2-dimensional, easing visual comprehension and structural oversight. - Erik Kaplun

7 Answers

252
votes

See follow-mode. Excerpt:

Follow mode is a minor mode that makes two windows, both showing the same buffer, scroll as a single tall “virtual window.” To use Follow mode, go to a frame with just one window, split it into two side-by-side windows using C-x 3, and then type M-x follow-mode. From then on, you can edit the buffer in either of the two windows, or scroll either one; the other window follows it. In Follow mode, if you move point outside the portion visible in one window and into the portion visible in the other window, that selects the other window—again, treating the two as if they were parts of one large window.
18
votes

I use this function to invoke follow-mode, although it would need customization for a different screen size:

;;; 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))
16
votes

The "Multipager" plugin for Vim can do this with VIM splits for people who want to get this behavior in Vim.

Get it from Dr. Chip's page: http://mysite.verizon.net/astronaut/vim/index.html#MPAGE

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

2
votes

Vim can do this using :vsplit - and you can have the same buffer open in multiple "windows" (which are actually sections within a single "window").

Documentation here

-1
votes

A quick look at the emacs wiki doesn't show a mode like you describe. However, it shouldn't be too hard to write one... You just need to split the window with C-x 3 and move the text in the other window down, and whenever you move the text, do the same to the other window...

Problems may occur when you get to the bottom of the buffer, do you want the cursor to immediately go to the other window at the top?

Hmm, maybe its not that easy. But it should still be doable...

-5
votes

this is the default behaviour of emacs when splitting the window (C-x 3 for vertical split) you get two columns which both have the current buffer open

-7
votes

Use vertical-split with C-x 3. This will split the current buffer into two columns that you can switch between with C-x o.