2013-03-06 32 views
8

Làm cách nào để tạo lệnh "Lưu trữ tất cả bộ đệm lặng lẽ" trong Aquamacs Emacs?làm thế nào để âm thầm "Lưu tất cả bộ đệm" trong Emacs?

Tôi đã tìm thấy lệnh save-some-buffers đẹp, nhưng vấn đề là nó nhắc tôi, riêng biệt, để xác nhận mọi bộ đệm tôi muốn lưu.

Thông qua Googling tôi tìm thấy một số tài liệu về biến số được gọi là save-silently-p nhưng dường như không tồn tại (trong phiên bản Aquamacs 2.4, tức là Emacs 23.3.50.1).

Vậy làm cách nào để tôi lưu tất cả bộ đệm mà không cần nhắc?

+0

Tất cả bạn cần là 'C-u C-x s' – ocodo

+2

hoặc' C-x s! '(Đó là rõ ràng đơn giản từ cách nhìn vào 'giúp đỡ C-h' cung cấp cho các tùy chọn prompt). – phils

+0

@phils rất đúng, thực sự không có ý tưởng tại sao câu trả lời được chấp nhận cần phải quá phức tạp. 'C-x s' và sau đó'! 'Không phải là" im lặng "và yêu cầu phản ứng với một dấu nhắc, (xin lỗi pedantic.) -' C-u' là hữu ích để biết bởi vì nó có thể cung cấp chức năng bổ sung cho rất nhiều thứ. Hãy thử 'C-u' và' M-x align-regexp' chẳng hạn. – ocodo

Trả lời

2

Trong ví dụ này, đầu tiên Đối số được đặt thành giá trị non-nil - "[o] đối số ptional (tiền tố) non-nil có nghĩa là lưu tất cả mà không có câu hỏi nào." Mặc dù nó có thể chỉ đơn giản là cũ t, tôi đã chọn tạo thành một biểu tượng có ý nghĩa hơn nhắc nhở bản thân về những gì nó đại diện - tức là, 'no-confirm. Nếu tôi muốn nhận được hộp thoại xác nhận, thì thay vào đó tôi sẽ sử dụng nil cho đối số đầu tiên.Xem doc-string - M-x describe-function RET save-some-buffers RET - để biết thêm thông tin về cách hoạt động của chức năng này tùy thuộc vào việc đối số đầu tiênnil hoặc non-nil.

Ví dụ dưới đây sử dụng save-some-buffers với một tuỳ chỉnh zero luận chức năng cho phần thứ hai luận - tức là, pred - để chọn bộ đệm sẽ được lưu. Doc-string cho save-some-buffers khẳng định rằng thứ hai luận - tức là, pred - có thể được một trong ba khả năng - (1) Nếu prednil, tất cả các bộ đệm tập tin quý khách đến thăm được coi ; (2) Nếu PREDt, sau đó nhất định bộ đệm không tập tin cũng sẽ được xem xét; hoặc (3) Nếu PRED là một hàm không đối số, nó chỉ cho mỗi bộ đệm xem có nên xem xét hay không khi được gọi với bộ đệm đó.

Ví dụ sử dụng lối tắt bàn phím f5, nhưng người dùng được tự do gọi chức năng tùy chỉnh này tương tác - M-x my-save-some-buffers - hoặc gán hoàn toàn phím tắt khác cho bàn phím. Có một vài trận đấu có thể đã được mã hóa cứng, và người sử dụng là miễn phí để thêm/xóa/sửa đổi các điều kiện:

• tập tin quý khách đến thăm đệm + tên tập tin phù hợp với giá trị của biến abbrev-file-name .

• tập tin quý khách đến thăm đệm + các chính-mode là latex-mode từ được xây dựng trong tex-mode.el - không AUCTeX.

• bộ đệm truy cập tệp + chế độ chính là markdown-mode.

• bộ đệm truy cập tệp + chế độ chính là emacs-lisp-mode.

• bộ đệm truy cập tệp + chế độ dẫn xuất là org-mode.

(defun my-save-some-buffers() 
(interactive) 
    (save-some-buffers 'no-confirm (lambda() 
    (cond 
     ((and buffer-file-name (equal buffer-file-name abbrev-file-name))) 
     ((and buffer-file-name (eq major-mode 'latex-mode))) 
     ((and buffer-file-name (eq major-mode 'markdown-mode))) 
     ((and buffer-file-name (eq major-mode 'emacs-lisp-mode))) 
     ((and buffer-file-name (derived-mode-p 'org-mode))))))) 

(global-set-key [f5] 'my-save-some-buffers) 
2

Từ trang thông tin của save-some-buffers:

(tiết kiệm-số-đệm & tùy chọn ARG pred)

Lưu một số bộ đệm tập tin quý khách đến thăm sửa đổi. Yêu cầu người dùng về từng loại. Bạn có thể trả lời y' to save, n 'không lưu, C-r' to look at the buffer in question with chế độ xem bộ đệm' trước khi quyết định hoặc d' to view the differences using diff-buffer-with-file '.

Lệnh này trước tiên sẽ lưu mọi bộ đệm trong đó 'đệm-lưu-không-truy vấn' không phải là không, mà không hỏi.

Do đó, bạn nên đặt biến số buffer-save-without-query thành t (ví dụ) cho tất cả các tệp của mình. (add-hook 'find-file-hook (lambda() (setq buffer-save-without-query t))) nên thực hiện thủ thuật.

+0

Khi tôi thêm '(setq-default buffer-save-without-query t)' vào tệp '.emacs' và sau đó chạy lệnh 'save-some-buffers', nó vẫn nhắc tôi với:' File để lưu vào : ~/'(mặc dù tất cả các bộ đệm của tôi trước đây đã được lưu vào đĩa) – incandescentman

+0

Tôi không hiểu thiết lập/vấn đề chính xác của bạn là gì. –

+0

Tôi muốn lưu tất cả các bộ đệm đó mà không cần nhắc.Bây giờ, thay vì lưu âm thầm, khi tôi lưu 'save-some-buffers' hoặc thậm chí' save-buffer-kill-terminal', nó sẽ nhắc tôi với: 'File để lưu vào: ~ /' – incandescentman

12

Không cần cài đặt bất kỳ biến tùy chỉnh, bạn chỉ đơn giản là:

C-u C-x s 

Hoặc trong dài tay:

Ctrl + uCtrl + xs

Ngoài ra bạn chỉ có thể làm, C-x s và nhấn ! tại dấu nhắc trả lời có cho tất cả các bộ đệm tệp có thể gỡ rối. Đó là không hoàn toàn im lặng, nhưng nó vẫn còn rất nhanh/unobstrusive. (Tín dụng: @phils)

8

Nếu bạn vượt qua phi nil để tiết kiệm-số-đệm nó sẽ lưu tất cả các file mà không nhắc, vì vậy bạn có thể làm điều gì đó như

(defun save-all() (interactive) (save-some-buffers t)) 
(global-set-key (kbd "C-S") 'save-all) 
Các vấn đề liên quan