2013-08-11 24 views
9

Tôi biết rằng các emacs có thể nhận dạng tệp theo đuôi, một dòng đầu tiên là -*- mode -*- và thậm chí theo đường dây shebang, nhưng tôi phải làm gì nếu tôi muốn ghi đè lên shebang?Nhận dạng một tập tin bằng tiếng shebang và không có phần mở rộng

Ví dụ, một kịch bản mà bắt đầu với

#!/usr/bin/env python2.7 
... 

sẽ không được công nhận bởi các dòng công việc một mình. Tôi cũng không thể thêm vào một dòng -*-python-*-, bởi vì sau đó vỏ sẽ cố gắng phân tích nó. Làm cách nào để giải quyết vấn đề này?

Trả lời

10

Bạn đặt -*- mode: python -*- trong dòng giây thứ hai thứ hai (ngoại lệ đặc biệt, được thêm cụ thể cho các điều khoản shebang).

+0

điều này là cực kỳ rõ ràng. – Shep

3

Như thế này:

#!/usr/bin/env python2.7 

print "test" 

# Local Variables: 
# mode: python 
# End: 

thông tin này xuất phát từ Specifying File Variables nút của info.

  1. Sử dụng f1 i để nhập thông tin.
  2. Sử dụng g(emacs) để chuyển tới thông tin emacs.
  3. Sử dụng gSpecifying File Variables để chuyển đến trang. Bạn có thể sử dụng tab để hoàn thành tên nút.
+0

là dòng thử nghiệm "in" "" cần thiết? – Shep

+0

điều này không hiệu quả đối với tôi, liệu tài liệu này có ở đâu đó không? – Shep

+0

in "kiểm tra" là không cần thiết, tất nhiên, nó chỉ là một số mã python để đảm bảo rằng font-lock là trên. Nếu điều này không hiệu quả, bạn cần nâng cấp Emac của bạn. Phiên bản hiện tại là 24.3 –

5

Bạn có thể thử đặt một cái gì đó giống như

(add-to-list 'interpreter-mode-alist '("python2.7" . python-mode)) 

trong .emacs của bạn. Xem “Choosing File Modes” để biết thêm thông tin.

+0

Tôi không thể làm việc này bằng cách dán dòng này trực tiếp vào tệp '.emacs' của tôi. Bạn có mong đợi điều gì đó _like_ này hoạt động không, hoặc công việc này có hiệu quả không? – Shep

+0

Tôi không thử nghiệm, nhưng tôi đã làm một số thử nghiệm và tôi nghĩ rằng nó sẽ hoạt động. Bạn cần phải khởi động lại Emacs hoặc đánh giá dòng đó để áp dụng thay đổi. – KrzysiekJ