[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Emacsは、フレームを2つ以上のウィンドウに分割できます。 複数のウィンドウは、異なるバッファの一部分、あるいは、 1つのバッファの異なる部分を表示することができます。 複数フレームはつねに複数ウィンドウを意味します。 というのは、各フレームはそれ独自のウィンドウの集合を持つからです。 各ウィンドウはたった1つのフレームだけに属します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
各Emacsウィンドウは、いつでも1つのEmacsバッファを表示します。 1つのバッファは複数のウィンドウに表示できます。 その場合、そのテキストの変更は、そのバッファを表示している すべてのウィンドウで表示されます。 しかし、同じバッファを表示している各ウィンドウでは バッファの異なる部分を表示することができます。 なぜなら、各ウィンドウはそれ自身のポイント値を持つからです。
どんなときでも、1つのウィンドウだけが選択されたウィンドウです。 そのウィンドウに表示されているバッファがカレントバッファです。 端末のカーソルは、そのウィンドウのポイント位置を示します。 別の各ウィンドウにもそれぞれ同じようにポイント位置がありますが、 端末にはカーソルは1つしかないので、 それらの位置を示す方法がありません。 Xウィンドウシステムで複数フレームを表示しているときには、 各フレームには、そのフレームで選択されたウィンドウにカーソルがあります。 選択されているフレームのカーソルは塗り潰されている矩形で、 それ以外のフレームのカーソルは中空の矩形です。
ポイントを移動するコマンドは、選択されているEmacsウィンドウのポイント 値に対してだけ影響します。 たとえ同じバッファを表示しているとしても、 他のEmacsウィンドウのポイント値は変更しません。 選択しているウィンドウでカレントバッファを変更する C-x bといったコマンドでも同様です。 他のウィンドウには少しも影響しません。 しかし、別のウィンドウを選択してそのバッファを切り替える C-x 4 bのようなコマンドもあります。 さらに、(たとえば)C-h f(describe-function
)や C-x C-b(list-buffers
)などを含む ウィンドウに情報を表示するコマンドは、 選択されているウィンドウに影響することなく、 選択されていないウィンドウのバッファを切り替えます。
複数のウィンドウが同じバッファを表示するとき、 異なるリージョンを持つことができます。 というのは、各ウィンドウは、それぞれ異なるポイント値を持てるからです。 しかしながら、各バッファにはたった1つのマーク位置しかないため、 マークの値はすべて同じになります。
各ウィンドウにはそれ専用のモード行があり、 そこにはウィンドウに表示しているバッファの名前、修正状態、 バッファのメジャーモード、バッファのマイナモードを表示します。 モード行に関して詳しくは、See 節 B.3 モード行。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
split-window-vertically
)。split-window-horizontally
)。 コマンドC-x 2(split-window-vertically
)は、 選択されているウィンドウを上下2つのウィンドウに分割します。 どちらのウィンドウも同じポイント値、同じバッファを表示するところから 始まります。 デフォルトでは2つのウィンドウは、 それぞれ、分割されるウィンドウの半分の高さになります。 数引数は上のウィンドウの行数を指定します。
C-x 3(split-window-horizontally
)は、 選択されているウィンドウを左右2つのウィンドウに分割します。 数引数は左側のウィンドウの桁数を指定します。 2つのウィンドウはスクロールバーで分けられます。 画面幅に満たないウィンドウのモード行は、切り詰められます。 Emacsが強調表示を扱えない端末では、 切り詰めたモード行が反転表示されない場合があります。
モード行やスクロールバーでC-Mouse-2をクリックすることで、 ウィンドウを左右や上下に分割できます(この機能はX toolkitsによるスクロールバーで は動作しません)。 分割する線はクリックした位置を通ります。 モード行でクリックすると、新しいスクロールバーはクリックした点上を通ります。 スクロールバーでクリックすると、 分割したウィンドウのモード行はクリックした位置に並びます。
ウィンドウの幅が十分でないと、長すぎて行に入りきらないテキスト行が 多くなります。 これらの行すべてを継続すると混乱してしまうかもしれません。 変数truncate-partial-width-windows
にnil
以外を設定すると、 画面幅に満たないすべてのウィンドウで切り詰めを強制できます。 これは、表示されているバッファやtruncate-lines
の値とは独立しています。 See 節 D.8 継続行 (2004/03/28)。
水平スクロールは左右に並べたウィンドウでよく使われます。 See 節 J. 画面の制御。
split-window-keep-point
の値がnil
以外(デフォルト)ならば、 C-x 2で分割した2つのウィンドウは、 分割前のウィンドウのポイント値を継承します。 つまり、スクロールを避けられません。 この変数がnil
ならば、 C-x 2は、画面上のテキストが移動しないように、 各ウィンドウで見えている部分にポイントを移動しようと試みます。 また、分割前にカーソルがあった行を表示しているウィンドウを選択します。 遅い端末では後者の動作を好むユーザーもいます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
other-window
)。 (小文字の)oであってゼロではない。scroll-other-window
)。mouse-select-window
)。 別のウィンドウを選択するには、そのモード行でMouse-1をクリックします。 キーボードからは、C-x o(other-window
)で ウィンドウを切り替えられます。 これは「other」のoであってゼロではありません。 2つ以上のウィンドウがあるときは、このコマンドはすべてのウィンドウを、 一般的には、上から下へ、左から右へ巡回します。 もっとも右下のウィンドウのつぎは、左上隅にあるウィンドウに戻ります。 数引数は、ウィンドウを巡回する回数を意味します。 負の引数では逆順に巡回します。 ミニバッファを使っているときには、 ミニバッファが巡回の最後のウィンドウになります。 ミニバッファウィンドウから別のウィンドウに切り替えて、 あとで戻ってきて、ミニバッファ引数が要求しているものを与えてから終了できます。 See 節 E.2 ミニバッファでの編集 (2005/03/24)。
通常のスクロールコマンド(see 節 J. 画面の制御)は、 選択されているウィンドウのみに作用しますが、 つぎのウィンドウをスクロールするコマンドが1つあります。 C-M-v(scroll-other-window
)は、 C-x oが選択するウィンドウをスクロールします。 C-vのように正負の引数を取ります。 (ミニバッファでは、ミニバッファヘルプがあると、 標準の巡回順でつぎのウィンドウではなくて、 ミニバッファヘルプを表示しているウィンドウをスクロールする。)
コマンドM-x compare-windowsは、 2つのウィンドウで見えている2つのファイル、つまり、バッファを比較して、 一致しないつぎの箇所へ移動します。 詳細は、See 節 N.9 ファイルの比較。
mouse-autoselect-window
を nil
以外にすると,別のウィンドウ上にマ ウスを移動させることでウィンドウを選択できます.この機能はデフォルトではオフになっ ています.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
C-x 4は、(ウィンドウが1つだけならば分割して) 別のウィンドウを選択して、そのウィンドウでバッファを選択するコマンドの プレフィックスキーです。 異なるC-x 4コマンドは、異なる方法で選択するバッファを探します。
switch-to-buffer-other-window
を実行する。display-buffer
を実行する。find-file-other-window
を実行する。 see 節 N.2 ファイルを訪問する。dired-other-window
を実行する。 see 節 AC. ディレクトリエディタdired。mail-other-window
を実行する。 これは、同じウィンドウを使うC-x mに類似したもの。 (see 節 AA. メイルの送信)。find-tag-other-window
を実行するが、 M-.の複数ウィンドウ向けの変種 (see 節 X.2 タグテーブル)。find-file-read-only-other-window
を実行する。 see 節 N.2 ファイルを訪問する。[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
ある種のEmacsコマンドは、特別な内容を持つ特有のバッファに切り替えます。 たとえば、 M-x shellは、`*Shell*'という名前のバッファに切り替えます。 慣習では、これらのすべてのコマンドは、 別のウィンドウにバッファを立ち上げるようにプログラムされています。 しかし、これらのバッファのいくつかを選択されている ウィンドウに表示するように指定できます。
バッファ名をリストsame-window-buffer-names
に追加すると、 そういったコマンドは、選択されているウィンドウで特定のバッファに切り替えます。 たとえば、そのリストに要素"*grep*"
を追加すれば、 grep
コマンドは、選択されているウィンドウにその出力バッファを表示します。
same-window-buffer-names
のデフォルト値はnil
ではありません。 (古いEmacsパッケージが使うものも含めて) バッファ名、`*info*'、`*mail*'、`*shell*'を指定してあります。 このため、M-x shellが通常は選択されているウィンドウで `*shell*'バッファに切り替えるのです。 もしこの要素をsame-window-buffer-names
から削除すると、 M-x shellのふるまいは変わります。 かわりに別のウィンドウでバッファを立ち上げます。
これらのバッファを、より一般的に変数same-window-regexps
で指定できます。 この変数には、正規表現のリストを設定します。 そうすると、正規表現の1つに一致するバッファはどれも、 選択されているウィンドウでバッファを切り替えて表示します。 (繰り返すが、これは、普通は別のウィンドウに 表示されるバッファのみにあてはまる。) この変数のデフォルト値には、telnetバッファとrloginバッファが指定されています。
類似の機能で、独立したフレームに表示させるバッファを指定することができます。 See 節 Q.9 特別なバッファフレーム。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
delete-window
)。 このキー列の最後の文字はゼロ。delete-other-windows
)。kill-buffer-and-window
)。 このキー列の最後の文字はゼロ。enlarge-window
)。enlarge-window-horizontally
)。shrink-window-horizontally
)。shrink-window-if-larger-than-buffer
)。balance-windows
)。mouse-delete-other-windows
)。mouse-delete-window
)。フレームにウィンドウが1個しかなければ,カレント バッファを他のバッファに切り替える. ウィンドウを削除するには、C-x 0(delete-window
)と打ちます (これはゼロ)。 削除されたウィンドウが占めていた場所は、隣接のウィンドウに与えられます。 (ただし、ミニバッファのウィンドウを使っている場合でも、 ミニバッファのウィンドウには与えない。) ウィンドウを一度削除すると、その属性は失われます。 ウィンドウの構成情報を回復する以外にウィンドウをもとに戻す方法はありません。 ウィンドウを削除しても、そこに表示していたバッファには何の影響もありません。 バッファは存在し続け、どのウィンドウへでもC-x bで選択できます。
C-x 4 0(kill-buffer-and-window
)は、 C-x 0よりも強いコマンドです。 これは、カレントバッファを削除し、そこで選択されていたウィンドウを削除します。
C-x 1(delete-other-windows
)は、 別の意味でさらに強力です。 選択されているウィンドウ(とミニバッファ)を除いて、 すべてのウィンドウを削除します。 選択されているウィンドウは、エコー領域を除いたフレーム全体を 使うように広がります。
モード行でMouse-2をクリックしても、そのウィンドウを削除できます。 モード行でMouse-3をクリックすると、そのウィンドウを除いて、 フレーム内のすべてのウィンドウを削除します。
ウィンドウの高さを調節するもっとも簡単な方法は、マウスを使うことです。 モード行でMouse-1を押し下げてモード行を上下にドラッグすると、 ウィンドウの高さを変更できます。
上下に接しているウィンドウの分割を再調整するには、 C-x ^(enlarge-window
)を使います。 このコマンドは、現在選択されているウィンドウを1行だけ、あるいは、 数引数分の行数だけ大きくします。 負の引数を指定すると、選択されているウィンドウは小さくなります。 C-x }(enlarge-window-horizontally
)は、 選択されているウィンドウを指定された桁数分だけ広くします。 C-x {(shrink-window-horizontally
)は、 選択されているウィンドウを指定された桁数分だけ狭くします。
ウィンドウを大きくするとき、その場所は隣のウィンドウから取ります。 その結果、ウィンドウが小さくなりすぎるとそのウィンドウは削除され、 その場所を隣接するウィンドウに与えます。 最小の大きさは変数window-min-height
と window-min-width
で指定します。
コマンドC-x -(shrink-window-if-larger-than-buffer
)は、 選択されているウィンドウの高さが、表示しているバッファのテキスト全体を 表示するために必要な高さよりも大きい場合には、 その高さを縮めます。 余った行はフレーム内の他のウィンドウに与えられます。
選択されているフレーム内のすべてのウィンドウの高さをすべて同じにするには、 C-x +(balance-windows
)を使えます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
M-x winner-mode はグローバルマイナーモードで,ウィンドウの設定(つまり,フ レームがどのように分割されたかなどの情報)を記録します.このため,ウィンドウ分割 などのアンドゥが可能になるのです.アンドゥを行うためには,C-x left (winner-undo
) を実行します.アンドゥを取り消す(リドゥ)は C-x right (M-x winner-redo
) で行います.winner-mode
を有効にする他の方法とし て winner-mode
をカスタマイズする方法もあります.
Windmove コマンドによりフレーム内で隣接するウィンドウ間を直接往き来できるように なります.例えば,M-x windmove-right は現在選択しているウィンドウの右にあ るウィンドウを選択できます.同様のコマンドとして"left","up","down"がそれ ぞれ用意されています.M-x windmove-default-keybindings を実行すると,これ らのコマンドが S-right のようなキーにバインドされます.(ただし,すべての端 末で Shift を押しながらカーソルキーを入力するようなキーが有効になるとは限りませ ん)
「Follow minor mode」(M-x follow-mode) は同じバッファを複数のウィンドウで 同時に同期して表示させる機能です.このため,バッファの隣接したセクションが表示さ れることになります.See 節 J.3 追従モード.
M-x scroll-all-mode は現在表示されているウィンドウをすべて同時にスクロール させる機能です.変数 scroll-all-mode
をカスタマイズすることで有効にできま す.このモードは M-x scroll-all-scroll-down-all, M-x scroll-all-page-down-all と"up" に対応するコマンドを提供します.このモードを 便利にするために,これらのコマンドを適当なキーに割り当てておくといいでしょう.
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |