2009-02-10 39 views
11

Tôi là người dùng tab. Trừ khi tôi đang làm việc trên một dự án đã sử dụng không gian, tôi sử dụng các tab. Tôi chủ yếu làm php và html. Tôi đã có các tab trong php hoạt động tốt. Nhưng tôi không thể tìm ra cách sử dụng các tab chế độ html thay vì hai dấu cách.Tab ở chế độ HTML trong Emacs

Dưới đây là những gì tôi có cho đến nay:

(setq c-default-style "python") 
(setq-default c-basic-offset 4 
       tab-width 4 
       indent-tabs-mode t) 

tôi có thể thiết gì để chế độ html sẽ sử dụng các tab?

Trả lời

26
(add-hook 'html-mode-hook 
      (lambda() 
      (setq sgml-basic-offset 4) 
      (setq indent-tabs-mode t))) 

này hoạt động bởi vì khi indent-tabs-modet, logic thụt đầu dòng mặc định Emacs' thay thế không gian với các tab bất cứ khi nào nó có thể trong khi vẫn duy trì các cột thích hợp bù đắp cho thụt đầu dòng. Vì vậy, ví dụ nếu mã của bạn được cho là được bù đắp bởi bốn ký tự cho mỗi cấp thụt đầu dòng (tức là sgml-basic-offset4, như trên), mã của bạn nên được thụt lề hai cấp độ sâu, và có bốn cột cho mỗi cấp thụt đầu dòng, sau đó Emacs tính toán rằng nó thụt vào với hai tab và không gian bằng không, điều này sẽ dẫn đến việc bù đắp cột thích hợp.

Điều này cũng có nghĩa là, tuy nhiên, điều trên sẽ không hoạt động hoàn toàn đúng nếu bạn đã nhầm lẫn với số tab-width của mình. Ví dụ nếu bạn đặt nó thành 8 và đang thụt lề một mức sâu, Emacs tính rằng ngay cả khi nó chỉ chèn một tab, thì bù trừ cột trực quan (8) sẽ lớn hơn độ lệch mong muốn (4). Vì vậy, nó sẽ chèn bốn dấu cách để thay thế. Thử đặt sgml-basic-offset thành giống như số tab-width của bạn.

+1

Tôi có thể làm điều gì sai không? Mã đó không có hiệu lực đối với tôi. Chạy Emacs 22.3.1 btw. – Echo

+0

Bạn có đang sử dụng chế độ html được vận chuyển với các emacs hoặc một bên thứ ba không? –

+0

Chỉ chế độ html mặc định được vận chuyển với các emac. – Echo

2

thực sự, chế độ tab thụt lề có thể là t theo mặc định.

Hãy thử M-i, chỉ để đánh dấu. Điều đó sẽ chèn một ký tự tab. Nó không phải là một giải pháp tuyệt vời, nhưng nó có thể làm việc trong một pinch.

CSONG, làm cách nào bạn kiểm tra không gian so với tab? di chuyển qua nó? hoặc xóa nó? bạn có thể có 'lạc hậu-xóa-char-untabify' nuôi dưỡng nó đầu.

+0

Yup, tôi đã thử giết và mở lại bộ đệm và khởi động lại các emac. – Echo

Các vấn đề liên quan