Làm thế nào để thiết lập các cửa sổ mặc định khi khởi động?


18

Mỗi lần tôi mở Emacs, tôi có xu hướng thiết lập 3 cửa sổ bằng cách thực hiện C-x 3( split-window-right) và sau đó C-x2( split-window-below). Sau đó tôi phải chuyển sang từng cửa sổ để mở các tập tin tôi muốn chỉnh sửa.

Làm thế nào tôi có thể thiết lập điều này được thực hiện tự động?

Có cách nào để Emacs phục hồi cùng một tổ chức màn hình (windows và file) từ lần sử dụng trước không?

Câu trả lời:


13

Kể từ Emacs 24.4, bạn có thể sử dụng chế độ lưu-để bàn . Nó là một phần của Emacs từ lâu, nhưng bố cục cửa sổ chỉ được lưu và khôi phục kể từ phiên bản 24.4.

Chỉ cần thêm dòng này trong tệp init của bạn:

(desktop-save-mode 1)

3
Điều này sẽ khôi phục các tệp từ phiên trước đó, nhưng nó sẽ không khôi phục bố cục cửa sổ.
itjeyd

1
Không, tôi đã thử nó. Hướng dẫn sử dụng Emacs : Khi bạn lưu màn hình Emacs - bộ đệm, tên tệp, chế độ chính, vị trí bộ đệm , v.v. - sau đó các phiên Emacs tiếp theo tải lại màn hình đã lưu.
Sviridov Alexander

3
"Vị trí bộ đệm" chỉ vị trí của điểm (con trỏ) trong bộ đệm đã cho. Vâng, điều này sẽ được khôi phục với desktop-save-mode. Bố cục cửa sổ đề cập đến số lượng cửa sổ hiện đang được hiển thị và cách chúng được định vị. desktop-save-modekhông bảo tồn bố cục này.
itjeyd

3
Có, "bố cục cửa sổ" và "vị trí bộ đệm" là những thứ khác nhau, bạn đã đúng. Nhưng bố cục cửa sổ của tôi đã được khôi phục. Có vẻ như việc lưu bố cục cửa sổ đã được thêm vào trong ảnh chụp nhanh.
Sviridov Alexander

1
@pors, có vẻ như không phải vậy nếu bạn đang sử dụng Emacs (24.4 trở lên) ở chế độ đầu cuối. Không có cấu hình cửa sổ được lưu / khôi phục.
skyork

7

viết một hàm gần với hàm đó trong tệp init của bạn, bạn có thể sẽ phải sửa đổi nó một chút để phù hợp với nhu cầu của bạn:

;; layout definition
(defun my-startup-layout ()
 (interactive)
 (delete-other-windows)
 (split-window-horizontally) ;; -> |
 (next-multiframe-window)
 (find-file "~/.emacs.d/init.el")
 (split-window-vertically) ;;  -> --
 (next-multiframe-window)
 (find-file "~/.emacs.d/init_settings.el")
 (next-multiframe-window)
 (dired "~")
)

;; execute the layout
(my-startup-layout )

Có cách nào để Emacs phục hồi cùng một tổ chức màn hình (windows và file) từ lần sử dụng trước không?

Bạn nên xem qua gói bố trí


6

Bạn có thể sử dụng workgroups2để quản lý máy tính để bàn của bạn. Từ README trên GitHub:

Workgroups là người quản lý phiên cho Emacs.

  • Nó lưu tất cả các bộ đệm đã mở của bạn, vị trí và kích thước của chúng trên đĩa để khôi phục lại sau
  • Bạn có thể tạo một số không gian làm việc

Bạn cũng có thể khôi phục các bộ đệm như: org-agenda, shell, magit-status, help.

Nếu bạn đã bật kho lưu trữ MELPA , bạn có thể cài đặt gói này qua M-x package-install RET workgroups2 RET.

Các thiết lập cơ bản là:

(require 'workgroups2)
(workgroups-mode 1) ; This should go at the end of your init file

Khi bạn khởi động lại Emacs lần đầu tiên sau khi thêm mã này vào tệp init, workgroups2sẽ tự động tạo một nhóm làm việc cho bạn. Bạn có thể xác minh rằng điều này đã thành công bằng cách kiểm tra *Messages*bộ đệm để biết thông tin sau:

Workgroups Mode: on
Switched: First workgroup
Created: First workgroup  ( -<{ 0: First workgroup }>- )

Từ thời điểm này, Emacs sẽ tự động lưu cấu hình hiện tại của các cửa sổ và tệp khi thoát và khôi phục lại vào lần tiếp theo.


2

Tôi đã sử dụng một cái gì đó được mô phỏng theo .emacs.d của sanityinc . Nó sử dụng desktop-save-mode, và cũng đủ thông minh để sử dụng frame-restoretrên các phiên bản cũ hơn. Từ readme cho frame-restoretừ package-list-packages:

Lưu và khôi phục các tham số của khung Emacs.

Chỉ cần gọi frame-restore' in yourinit.el ':

(chế độ khôi phục khung)

Lưu ý rằng kể từ r113242, chế độ Desktop Save tích hợp sẽ khôi phục các khung. Nếu bạn đang sử dụng một Emacs chụp xây dựng chậm nhất là phiên bản này, bạn đang mạnh nên sử dụng Desktop chế độ tiết kiệm thay vì:

(chế độ máy tính để bàn)

Chế độ Khôi phục khung sẽ hiển thị cảnh báo đậm nếu được bật trong bản dựng Emacs có chế độ Lưu màn hình có thể khôi phục khung.

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.