Làm cách nào để tôi tự động tải một chế độ cho một bộ phần mở rộng tệp cụ thể?


17

Tôi muốn tải yaml-modecho bất kỳ tập tin có tên *.ymlhoặc *.yaml.


7
Đọc hướng dẫn Elisp, nútAuto Major Mode và bạn sẽ có thể trả lời câu hỏi của riêng bạn : auto-mode-alist. Ồ, tôi thấy bạn đã làm điều đó, 10 giây sau khi bạn đăng câu hỏi. Có lẽ không phải là một ý tưởng tốt để bơm Q & A từ hướng dẫn theo cách này. Nhưng tôi đoán đó là một câu hỏi sẽ xảy ra với mọi người, và câu trả lời sẽ giúp họ. Quá tệ, họ sẽ học nó theo cách này, thay vì học nó từ chính Emacs. Tốt hơn là dạy mọi người cách tìm câu trả lời như vậy, IMO.
vẽ

1
Hãy thêm vào như một câu trả lời. Tôi đã hỏi câu hỏi này bởi vì đây là câu hỏi tôi đã giải quyết trong quá khứ và nó rất giống với một câu hỏi được đề xuất trong danh sách area51.
b4hand

1
Không vấn đề gì. Xin lỗi nếu tôi nghe có vẻ tiêu cực. Như tôi đã nói, câu hỏi và câu trả lời sẽ giúp mọi người.
vẽ

Đối với những gì nó có giá trị, điều này rất giống với một câu hỏi đã được hỏi trong giai đoạn đề xuất trên khu vực51: area51.stackexchange.com/proposeals/76571/emacs/76640#76640
b4hand

Không có gì sai khi hỏi một câu hỏi như vậy. Nhận xét của tôi ban đầu chỉ là câu đầu tiên. IMO, thật tốt khi mọi người có thói quen hỏi Emacs trước và hỏi SE thứ hai. Emacs hơi đặc biệt khi giúp người dùng theo cách này - đó không phải là chủ đề SE trung bình của bạn. Nhưng người dùng thường cần trợ giúp để học cách hỏi Emacs.
vẽ

Câu trả lời:


15

Thêm những dòng này vào .emacstập tin của bạn :

(require 'yaml-mode)
(add-to-list 'auto-mode-alist '("\\.ya?ml\\'" . yaml-mode))

Đây auto-mode-alistlà một biến mà emacs tư vấn bất cứ khi nào một tập tin mới được mở. Bạn có thể thêm ánh xạ giữa các mẫu tên tệp và chế độ chính.

Bạn có thể tìm hiểu thêm về cách Emacs xác định chế độ nào sẽ tải cho một bộ đệm nhất định từ hướng dẫn sử dụng Emacs .


4
"\\. Ya? Ml \ '" là hình thức ưa thích, vì nó thực sự là kết thúc của chuỗi, không phải là một dòng mới. Nó thực sự tạo ra sự khác biệt cho tệp có một dòng mới trong tên của họ ... 'foo.yaml \ nc' nên thực sự là một tệp C, không phải là tệp yaml (vâng, điều này rất khó xảy ra, nhưng vẫn vậy)
Sigma

2
Sẽ rất hữu ích nếu bạn cũng liên kết với hướng dẫn sử dụng emacs nơi thông tin này được cung cấp.
Trevoke

Ngoài ra, (require 'yaml-mode)không cần thiết nếu chế độ được tự động tải (hầu như luôn luôn như vậy). Thư viện sẽ được tự động tải khi bạn mở một tệp có phần mở rộng tệp chính xác.
shosti

yaml-modeđã được cài đặt như một gói, tôi chắc chắn cần (require 'yaml-mode)dòng; nếu không, tôi sẽ thấy lỗi sau : File mode specification error: (void-function yaml-mode).
b4hand
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.