Tôi hiện đang sử dụng Emacs 23 với chế độ dòng trực quan để chỉnh sửa văn bản nhưng vẫn tiếp tục nhấn Mq ra khỏi thói quen (do đó thêm kết thúc dòng cứng ...) . Tôi tự hỏi nếu có một cách để thêm một điều kiện để vô hiệu hóa điền đoạn (hoặc loại bỏ ràng buộc để Mq) cho chế độ trong đó chế độ dòng trực quan được bật, nhưng để kích hoạt lại nó cho những người mà tôi vẫn còn sử dụng chế độ tự động điền? Cảm ơn!emacs: visual-line-mode và fill-paragraph
Trả lời
(defun maybe-fill-paragraph (&optional justify region)
"Fill paragraph at or after point (see `fill-paragraph').
Does nothing if `visual-line-mode' is on."
(interactive (progn
(barf-if-buffer-read-only)
(list (if current-prefix-arg 'full) t)))
(or visual-line-mode
(fill-paragraph justify region)))
;; Replace M-q with new binding:
(global-set-key "\M-q" 'maybe-fill-paragraph)
Thay vì sử dụng global-set-key
, bạn cũng có thể rebind M-q
chỉ ở chế độ cụ thể. (Hoặc, bạn có thể thay đổi ràng buộc toàn cầu, và sau đó ràng buộc M-q
quay lại fill-paragraph
trong một chế độ cụ thể.) Lưu ý rằng nhiều chế độ được tự động tải, vì vậy sơ đồ phím của chúng có thể không được xác định cho đến khi chế độ được kích hoạt. Để thiết lập một chế độ cụ thể ràng buộc, tôi thường sử dụng một chức năng như thế này: (. Các remove-hook
là không thực sự cần thiết, nhưng chức năng chỉ cần chạy một lần)
(add-hook 'text-mode-hook
(defun cjm-fix-text-mode()
(define-key text-mode-map "\M-q" 'maybe-fill-paragraph)
(remove-hook 'text-mode-hook 'cjm-fix-text-mode)))
bạn có thể sử dụng một tư vấn cho việc này.
Đối với emacs của bạn:
(defadvice fill-paragraph (around disable-for-visual-line-mode activate)
(unless visual-line-mode
ad-do-it))
này sẽ thay đổi fill-đoạn để làm gì khi hình ảnh-line-mode được bật lên. Bạn cũng có thể thêm lỗi nếu bạn thích điều đó.
Lưu ý rằng điều này sẽ vô hiệu hóa hoàn toàn' fill-paragraph' khi chế độ dòng trực quan được bật, ngay cả khi nó được gọi từ một hàm elisp. Bạn có thể không muốn là quyết liệt. – cjm
Tôi đồng ý, rất đẹp ... nhưng cjm có một điểm ... mặc dù tôi không biết làm thế nào thường điền đoạn được gọi là từ bên trong chức năng elisp. – hatmatrix
(Tôi yêu mặc định vì bạn cũng có thể tắt nó mà không cần khởi động lại các emacs) – hatmatrix
chế độ dòng trực quan có sơ đồ bàn phím riêng: visual-line-mode-map
. Tôi khuyên bạn nên khôi phục M-q chỉ trong sơ đồ bàn phím đó.
Bản đồ được xác định là một phần của quá trình khởi động, vì vậy bạn không cần đánh giá sau khi tải. Chỉ cần vô hiệu hóa ràng buộc ở chế độ đó:
(define-key visual-line-mode-map [remap fill-paragraph] 'ignore)
- 1. emacs dired và openwith
- 2. emacs, etags và sử dụng emacs như một IDE
- 3. Emacs Brace và Bracket Highlighting?
- 4. chia sẻ cấu hình emacs giữa emacs 23 và emacs 24
- 5. Ngày và giờ trong Emacs Lisp
- 6. Emacs dưới các tệp Windows và PNG
- 7. Emacs: Sử dụng và khởi tạo CEDET
- 8. Emacs, GDB và nhiều cửa sổ X
- 9. phép và flet trong Emacs Lisp
- 10. Emacs và các liên kết tượng trưng
- 11. Mở và lưu mã hóa Emacs
- 12. định nghĩa Reset và tải lại emacs mà không đóng, hoặc khởi động lại Emacs và bộ đệm tái mở
- 13. Emacs, Objective-C, và tự động hoàn thành
- 14. xmonad và Emacs: vấn đề với phím 'mod'
- 15. Emacs: Kết hợp chuyển tiếp và thu hồi-top-bottom
- 16. Biên dịch và chạy chương trình C trong Emacs
- 17. làm tổ lặp lại và `trong emacs lisp
- 18. phông chữ emacs cho phương tây và Khác như rtl
- 19. Emacs, Clojure, lein và nrepl: * nrepl * buffer hiển thị trống
- 20. Emacs: thiết lập và chuyển đổi show-dấu khoảng trắng
- 21. không xem trước bằng cách sử dụng auctex và emacs
- 22. Quan hệ C-i và tab trong Emacs là gì?
- 23. Phông chữ Emacs với khử răng cưa và gợi ý
- 24. Emacs + Mac OSX và thay đổi phông chữ mặc định
- 25. Emacs/CEDET. Nhiều dự án và hoàn thành mã
- 26. Emacs, unicode, xterm mouse escape sequence, và terminal rộng
- 27. C++ Mẫu và Emacs: Tùy chỉnh thụt lề
- 28. khác giữa khung và cửa sổ trong emacs
- 29. Chạy chương trình từ Emacs và không đợi đầu ra
- 30. Emacs Lisp: sự khác biệt giữa (hàm (lambda ...)) và (lambda ...)?
cài đặt chung trên toàn cầu 'M-q' là điều ác, vì nó ảnh hưởng đến tất cả các chế độ. nếu bạn phải làm điều này, sử dụng 'thay thế-key-definition' (hoặc sử dụng defadvice hoặc fset) – mihi
Nhưng đó là toàn bộ vấn đề. M-q đã là một ràng buộc toàn cầu. Anh ta muốn nó phục hồi chức năng kiểm tra chế độ trực quan. – cjm
Hmmm ... cũng là một lựa chọn tuyệt vời ... Thiết lập toàn cầu của M-q có thể nguy hiểm nhưng chức năng này đủ đơn giản (và thanh lịch) mà hậu quả của nó có thể dự đoán được? – hatmatrix