Làm thế nào để thay đổi kích thước của màn hình chia emacs windows?


172

Tôi có các emacs được chia theo chiều ngang - trên đầu tôi đang chỉnh sửa mã Perl, phía dưới là vỏ. Theo mặc định, emacs làm cho hai cửa sổ có kích thước bằng nhau, nhưng tôi muốn bộ đệm vỏ nhỏ hơn (có thể bằng một nửa kích thước?). Tôi đã tự hỏi làm thế nào tôi có thể làm điều đó.

Câu trả lời:


294

Với chuột, bạn có thể kéo các kích thước cửa sổ xung quanh.

Nhấp vào bất cứ nơi nào trên dòng chế độ không phải là 'hoạt động' (tên bộ đệm là an toàn hoặc bất kỳ khu vực không sử dụng nào ở phía bên tay phải) và bạn có thể kéo lên hoặc xuống.

Kéo hai bên đòi hỏi một cú nhấp rất chính xác vào vị trí mà hai dòng chế độ tham gia.

C-x -( shrink-window-if-larger-than-buffer) sẽ thu nhỏ một cửa sổ để phù hợp với nội dung của nó.

C-x +( balance-windows) sẽ làm cho các cửa sổ có cùng chiều cao và chiều rộng.

C-x ^( enlarge-window) tăng chiều cao thêm 1 dòng hoặc giá trị arg tiền tố. Một đối số tiêu cực thu nhỏ cửa sổ. ví dụ như C-- C-1 C-6 C-x ^co lại 16 hàng, như vậy C-u - 1 6 C-x ^.

(Không có ràng buộc mặc định cho shrink-window.)

C-x }( enlarge-window-horizontally) cũng vậy, theo chiều ngang.
C-x {( shrink-window-horizontally) cũng bị ràng buộc theo mặc định.

Thực hiện theo một trong các lệnh này với repeat( C-x zđể bắt đầu và chỉ zđể tiếp tục lặp lại) sẽ giúp bạn dễ dàng đạt được kích thước chính xác mà bạn muốn.

Nếu bạn thường xuyên muốn làm điều này với một giá trị cụ thể, bạn có thể ghi lại một macro bàn phím để làm điều đó hoặc sử dụng một cái gì đó như
(global-set-key (kbd "C-c v") (kbd "C-u - 1 6 C-x ^"))

Hoặc này:
(global-set-key (kbd "C-c v") (kbd "C-x o C-x 2 C-x 0 C-u - 1 C-x o"))

Đó là một hacky smidgen, vì vậy điều này sẽ tốt hơn:

(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)

Về mặt thực tế, tôi cũng thích winner-modecho phép bạn liên tục 'hoàn tác' bất kỳ thay đổi nào đối với cấu hình cửa sổ với C-c left(thay đổi đó là kích thước / số / cách sắp xếp của các cửa sổ hay chỉ bộ đệm nào được hiển thị). C-c rightđưa bạn trở lại cấu hình gần đây nhất. Đặt nó trên toàn cầu với(winner-mode 1)


3
Tuyệt vời, chính xác những gì tôi muốn! Cảm ơn bạn rất nhiều!
Steve

1
+1: cảm ơn về mẹo chế độ người chiến thắng 'hoàn tác'. btw, trong trường hợp của tôi, nhấp vào tên bộ đệm sẽ mở bộ đệm tiếp theo. Nhưng thật dễ dàng để thấy khi bạn có thể thay đổi kích thước khi nhìn vào hình dạng con trỏ chuột.
jfs

34

Tôi đặt những thứ này trong .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)

Hai cái đầu tiên không hoạt động với tôi trong Emacs 24.3.1 trên Mac OSX 10.9.1
Oskar Persson

1
@OskarPersson Nó có thể là xung đột với các phím tắt toàn cầu. Tìm ra nó trong ưu tiên hoặc điều khiển ánh xạ lại để khóa mũ (theo cách của tôi), nó sẽ hoạt động sau đó.
wilbeibi

Tôi có cùng một vấn đề và phát hiện ra rằng C-left và C-right đã xung đột với các phím tắt Mission Control trong OS X System Preferences, như được mô tả bởi @Wilbeibi.
Doug Richardson

1
Các khóa này đã được xác định, trước tiên hãy bỏ đặt các khóa (global-set-key (kbd "<C-up>") nil)trước khi đặt nó, nhưng M-leftthay vào đó sẽ được sử dụng tốt hơn
Mauricio Cortazar

@MauricioCortazar Tôi đã không sử dụng Emacs trong nhiều năm. Câu trả lời này có thể không áp dụng ngay bây giờ. Hãy cập nhật nó.
wilbeibi

13

Hãy thử sử dụng tài liệu trợ giúp của emacs.

C-h a

Sau đó nhập "phóng to" hoặc "cửa sổ"

Bạn sẽ tìm thấy những gì bạn muốn.

Thưởng thức!


Có thể một người đang làm việc trong một môi trường C-hkhông có sẵn. Sau đó thì sao?
Derrell Durrett

1
Nếu bạn đã clobbered tiêu chuẩn ràng buộc bản đồ giúp đỡ, sau đó bạn chắc chắn cần phải nhận thức những gì bạn đã clobbered nó với . (Nếu không được, cố gắng <f1>đó là khác trợ giúp chuẩn đồ ràng buộc.)
Phils

6

C-x ođến cửa sổ có kích thước bạn muốn mở rộng. Từ đó, C-x ^để mở rộng nó.


3
Trong trường hợp ràng buộc là khác nhau (của tôi), lệnh là enlarge-window. Một mẹo bổ sung là sử dụng tiền tố arg để kiểm soát lượng mở rộng.
Joseph Gay

Tuyệt vời! Cảm ơn rât nhiều!
Steve

6

C-x ^có các đối số số dương âm. Cụ thể, nếu bạn muốn thu nhỏ cửa sổ nơi con trỏ hiện tại bằng bốn dòng, bạn có thể nhấn C-u -4 C-x ^.


2

Đây không phải là câu trả lời chính xác mà bạn đang tìm kiếm, nhưng tôi đã vấp phải câu hỏi này khi tìm kiếm chức năng spacemacs, vì vậy tôi sẽ viết câu trả lời của mình chỉ vì sự hoàn chỉnh.

Tùy chọn là sử dụng <SPC> + w + .(nó hoạt động trong spacemacs vani)

Điều này mở ra một cửa sổ thoáng qua nơi người ta có thể sử dụng []{}để thay đổi kích thước ở mức độ chi tiết.

Không cần Cx hay Chuột ...

Cửa sổ thao tác trạng thái thoáng qua


Nếu có bất cứ điều gì tương tự trong emacs thông thường?
krokodil

Có lẽ nó không ở đó, đó là lý do tại sao Drew đã hỏi câu hỏi này ngay từ đầu ...
Yesh

0

Tôi đã có cùng một câu hỏi. Đây là giải pháp của tôi.
Đầu tiên tôi xác định một chức năng mới:

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

Ví dụ, tôi muốn chạy sơ đồ trong bộ đệm, vì vậy tôi viết lại nó.
Và đây là định nghĩa, với chức năng được xác định trước đó:

(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)))

Vì vậy, bây giờ khi tôi nhập: Mx run -eme-here, bộ đệm được thay đổi kích thước!
Và đây là tập tin cấu hình của tôi, hy vọng điều này sẽ giúp. https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el


3
liên kết của bạn bị hỏng :(
Ciprian Tomoiagă
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.