web-dev-qa-db-ja.com

分割画面のemacsウィンドウのサイズを変更するにはどうすればよいですか?

私は水平に分割されたemacsを持っています-上でPerlコードを編集しています、下はシェルです。デフォルトでは、emacsは2つのウィンドウのサイズを同じにしますが、シェルバッファーを小さくしたい(おそらく半分のサイズですか?)。どうすればそれができるのかと思っていました。

164
Steve

マウスを使用して、ウィンドウサイズをドラッグできます。

モード行の「アクティブ」以外の場所(バッファー名は安全、または右側の未使用領域)をクリックすると、上下にドラッグできます。

左右にドラッグするには、2つのモードラインが結合する場所を非常に正確にクリックする必要があります。

C-x- (shrink-window-if-larger-than-buffer)は、コンテンツに合わせてウィンドウを縮小します。

C-x+ (balance-windows)は、ウィンドウの高さと幅を同じにします。

C-x^ (enlarge-window)は、高さを1行、または接頭辞arg値だけ増やします。負の引数はウィンドウを縮小します。例えば C--C-1C-6C-x^ 16行縮小します。 C-u-16C-x^

shrink-windowにはデフォルトのバインディングはありません。)

C-x} (enlarge-window-horizontally)も同様に、水平方向に行います。
C-x{ (shrink-window-horizontally)もデフォルトでバインドされています。

これらのコマンドの1つにrepeatC-xz 開始し、ちょうど z 継続的な繰り返しの場合)、希望する正確なサイズに簡単に到達できます。

定期的に特定の値でこれを実行したい場合は、キーボードマクロを記録して実行するか、または
(global-set-key (kbd "C-c v") (kbd "C-u - 1 6 C-x ^"))

またはこれ:
(global-set-key (kbd "C-c v") (kbd "C-x o C-x 2 C-x 0 C-u - 1 C-x o"))

Smidgen hackyですので、これはより良いでしょう:

(defun halve-other-window-height ()
  "Expand current window to use half of the other window's lines."
  (interactive)
  (enlarge-window (/ (window-height (next-window)) 2)))

(global-set-key (kbd "C-c v") 'halve-other-window-height)

接線方向では、winner-modeも大好きです。これにより、ウィンドウ構成の変更を繰り返し「元に戻す」ことができます。 C-cleft (変更がウィンドウのサイズ/数/配置であるか、またはどのバッファが表示されるだけであるか)。 C-cright 最新の構成に戻ります。 (winner-mode 1)でグローバルに設定します

282
phils

これらを.emacsに入れます:

(global-set-key (kbd "<C-up>") 'shrink-window)
(global-set-key (kbd "<C-down>") 'enlarge-window)
(global-set-key (kbd "<C-left>") 'shrink-window-horizontally)
(global-set-key (kbd "<C-right>") 'enlarge-window-horizontally)
32
wilbeibi

emacsヘルプドキュメントを使用してみましょう。

C-ha

次に「enlarge」または「window」と入力します

あなたが欲しいものを見つけるでしょう。

楽しい!

14
maoyang

C-x oを、サイズを拡大したいウィンドウに。そこから、C-x ^を展開します。

6
vpit3833

C-x ^は、正のand負の数値引数を取ります。特に、カーソルが現在4行あるウィンドウを縮小したい場合は、C-u -4 C-x ^を押します。

6
justinpc

同じ質問がありました。これが私の解決策です。
最初に新しい関数を定義します:

(defun buffer-resize ()
  (delete-other-windows)
  (split-window-vertically (floor (* 0.68 (window-height))))
  (other-window 1)
  (switch-to-buffer buf)
  (other-window 1))

たとえば、バッファでスキームを実行したいので、書き直します。
そして、以下に定義を示します。先ほど定義した関数を使用しています。

(defun run-scheme-here ()
  "Run a new scheme process at the directory of the current buffer.
   If a process is already running, switch to its buffer."
  (interactive)
  (let* ((proc (format "scheme: %s" default-directory))
         (buf (format "*%s*" proc)))
    (unless (comint-check-proc buf)
      (let ((cmd (split-string scheme-program-name)))
        (set-buffer
         (apply 'make-comint-in-buffer proc buf (car cmd) nil (cdr cmd)))
        (inferior-scheme-mode)
        (buffer-resize)))
    (pop-to-buffer buf)))

ここで、M-x run-scheme-hereと入力すると、バッファーのサイズが変更されます!
そして、ここに私の設定ファイルがあります。これが役立つことを願っています。 https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el

0
user1001237