Emacs-複数の列と1つのバッファー


165

私は長くて薄いリストでフォーマットされる傾向があるいくつかのアセンブリコードを編集しようとしています。私が持っている水平方向のエーカーの一部を使用して、画面上に一度により多くのコードを表示できるようにしたいと思います。Emacs(または実際には別のエディター)に、すべて同じバッファーを指す複数の列を表示する方法はありますか?

Cx 3(emacs)と:vsplit(vim)は、コードへの複数の個別のビューに最適ですが、1つの列から別の列(新聞のテキストなど)に流れたいと思います。


1
CX 3および:vsplitはコードに複数の別々のビューのために素晴らしいですが、私はそれが(新聞にテキストのような)他の1つの列から流れてみたい
user119857

1
ありがとう!私はすべてのコードを30〜40文字にフォーマットしようとした4〜6列のコード表示に夢中になり、結果を非常に気に入っています。自然に短い行だけでなく、すべての行を短くして、スペースを大幅に減らしています。無駄であり、私の画面スペースはすべてテキストの表示に使用されています。また、コードブロックがより2次元になり、視覚的な理解と構造的な監視が容易になります。
Erik Kaplun、2016年

回答:


248

follow-modeを参照してください。抜粋:

フォローモードは、2つのウィンドウが両方とも同じバッファーを表示し、単一の高い「仮想ウィンドウ」としてスクロールするマイナーモードです。フォローモードを使用するには、ウィンドウが1つしかないフレームに移動し、Cx 3を使用して2つのサイドバイサイドウィンドウに分割してから、Mx follow-modeと入力します。それ以降は、2つのウィンドウのどちらかでバッファを編集するか、どちらかをスクロールできます。他のウィンドウがそれに続きます。追従モードでは、一方のウィンドウに表示されている部分の外側からもう一方のウィンドウに表示されている部分にポイントを移動すると、もう一方のウィンドウが選択されます。

3
これを3つ以上のウィンドウで使用できますか?これを使用して4つのウィンドウを使用できますか?
Yktula

同じソースの2つの列を2つのウィンドウに分割するのではなく、個別に編集することは可能でしょうか。これは最良の例ではありませんが、スクリプトコード用の列とコメント用の列があると想像してください。2列目にいる場合、「Enter」キーを押して次の行の2列目に続けます。これはEmacsまたは他のテキストエディターで可能ですか?
sw。

long long関数またはメソッドを編集することは非常に便利です。私はいつもこのモードを見つけて、2つのバッファを開いて、自分でこれを行います。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-marginする0と、で意味がわかりfollow-modeます。
Erik Kaplun、2016年

15

Vimの「マルチページャー」プラグインは、Vimでこの動作を実現したい人のためにVIMスプリットでこれを行うことができます。

チップ博士のページから入手してください:http : //mysite.verizon.net/astronaut/vim/index.html#MPAGE

ドキュメント:http : //mysite.verizon.net/astronaut/vim/doc/mpage.txt.html


1
しかし、問題はVimではなくEmacsに関するものでした。
Alexander I.Grafov 2015年

2

Vimはこれを使用してこれを行うことができます:vsplit-同じバッファーを複数の「ウィンドウ」(実際には単一の「ウィンドウ」内のセクション)で開くことができます。

ドキュメントはこちら


3
質問で述べたように、emacsでもそれが可能ですが、それは求められていることではありません。
justinhj 2009年

1
それをと組み合わせると:scrollbind、あなたはそこにいます。
バスティーブ

@Kragen-これを行う方法は次のとおりです:1.ウィンドウを垂直に分割して、単一のバッファーが2つのウィンドウに表示される2. 2番目のウィンドウをスクロールして、2番目のウィンドウの最初の行が最初のウィンドウの最後の行の後に来るようにする、3。:set scrollbind各ウィンドウでコマンドを発行します。これで、ウィンドウが必要に応じて一緒にスクロールします。(注:scrolloptには「ver」オプションが含まれている必要があります。)
Herbert Sitz

うーん、それは一種の仕事をします。涼しい!ありがとう!これを自動的に行うには、誰かがvimスクリプトを書く必要があります。
Kragen Javier Sitaker、2011年

-1

emacs wikiをざっと見ても、説明したようなモードは表示されません。ただし、1つ書くのはそれほど難しくありません... Cx 3でウィンドウを分割し、他のウィンドウのテキストを下に移動する必要があります。テキストを移動するときはいつでも、同じことを他のウィンドウに行います。 ..

バッファの下部に到達すると問題が発生する可能性があります。カーソルをすぐに上部の別のウィンドウに移動しますか?

うーん、たぶんそれほど簡単ではありません。しかし、それでも実行できるはずです...


1
...そして、Elispが物事に必要なリストに追加されました:)おかげでブライアン;)
user119857

明らかに、誰かがすでにそれを行っていましたが、そうです、elispは素晴らしいツールです!
Brian Postow

-5

これは、ウィンドウを分割するときのemacsのデフォルトの動作です(垂直分割の場合はCx 3)。現在のバッファーが開いている2つの列が表示されます。


1
しかしその場合、それはフォローモードではありません。フォローモードは、各バッファーが「次のページ」に配置されることを保証するため、ポイントを移動するのではなく、目を移動することでバッファーを読み取ることができます。
jrockway、2011

-7

Cx 3で垂直分割を使用します。これにより、現在のバッファーが2つの列に分割され、Cx oで切り替えることができます。


2
これは、ある列から別の列に自動的に流れるわけではありません。
kmarsh 2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.