Có cách nào để tạo mã thụt lề Emacs chỉ bằng các tab trên toàn cầu và không phải khoảng trắng. Tôi biết lệnh tabify. Tôi thích thụt lề tự động để sử dụng các tab hơn là hỗn hợp các tab và khoảng trắng như cấu hình mặc định.
Có cách nào để tạo mã thụt lề Emacs chỉ bằng các tab trên toàn cầu và không phải khoảng trắng. Tôi biết lệnh tabify. Tôi thích thụt lề tự động để sử dụng các tab hơn là hỗn hợp các tab và khoảng trắng như cấu hình mặc định.
Câu trả lời:
Vâng, để thụt lề với các tab, bạn sẽ muốn đảm bảo rằng indent-tabs-mode
là t
(đó là giá trị mặc định). Nhưng để chỉ nhận các tab, bạn cần điều chỉnh chế độ thực hiện thụt lề sao cho mọi dòng được thụt vào bởi nhiều bội số của bạn tab-width
(mặc định 8). Ví dụ: ở chế độ C, bạn có thể thử cài đặt c-basic-offset
thành 8.
Hoặc, bạn có thể giảm tab-width
giá trị của mình xuống một giá trị nhỏ hơn để Emacs không cần sử dụng khoảng trắng để đạt được từng mức thụt. Nhưng nếu bạn làm điều đó, mọi người khác phải làm việc với mã của bạn (và sử dụng các tab 8 ký tự tiêu chuẩn) sẽ bị làm phiền.
Tôi mong bạn xem xét lại. Cá nhân, tôi thấy làm việc với mã được thụt vào các tab gây khó chịu, đặc biệt nếu chúng không xuất hiện là 8 tab không gian. (Điều tồi tệ nhất là mã trong đó một số dòng sử dụng khoảng trắng, một số dòng sử dụng các tab và rõ ràng đó không phải là 8 tab không gian.) Chúng ta hãy ủng hộ và chỉ (setq indent-tabs-mode nil)
.
Emacs đi kèm với một số kiểu được xác định trước cho thụt đầu C hoặc bạn có thể tự viết nếu không phù hợp với nhu cầu của bạn. Trong số các kiểu tiêu chuẩn , có vẻ như bạn đang tìm kiếm linux
(kiểu được sử dụng trong nguồn nhân Linux), có thụt lề 8 cột và sử dụng các ký tự tab có chiều rộng 8.
Bạn có thể đặt các cài đặt này thành kiểu mặc định cho C bằng cách đặt cài đặt này vào .emacs
:
(setq c-default-style "linux")
(defun my-c-mode-hook ()
(setq indent-tabs-mode t)
(setq tab-width 8))
(add-hook 'c-mode-hook 'my-c-mode-hook)
Tuy nhiên, hãy đảm bảo rằng bạn không sử dụng các cài đặt này khi cộng tác với người khác với các tùy chọn khác nhau. Đặc biệt, sử dụng các tab sẽ làm cho bạn enemines. Nếu một tệp cụ thể được giữ theo một kiểu cụ thể, bạn có thể sử dụng các biến tệp để đảm bảo rằng tất cả những người chỉnh sửa tệp trong Emacs đều sử dụng cùng một cài đặt:
/*
* Local Variables:
* c-file-style: "linux"
* indent-tabs-mode: t
* tab-width: 8
* End:
*/
Nếu bạn có cả một dự án với các tệp C được thụt lề tương tự, hãy sử dụng các biến thư mục thay vì làm ô nhiễm mọi tệp. Tạo một tệp được gọi .dir-locals.el
với nội dung như sau:
((c-mode . ((c-file-style . "linux")
(indent-tabs-mode . t)
(tab-width . 8))))
Các tab làm phiền tôi, nhưng tôi phải tìm ra cách làm cho các emac chỉ sử dụng các tab để thụt lề để tôi có thể làm việc với mã của người khác. Đây là những gì làm việc cho tôi:
(defun tmp/change-indent ()
(interactive)
(setq indent-tabs-mode t)
(setq tab-width 2))
Tôi nhận thấy rằng trước khi làm rối mọi thứ, khi tôi nhấn phím tab, nó sẽ tự động thụt lề bởi 2 cột. Đặt "độ rộng tab" để khớp với 2 cột được cho phép emacs sử dụng các tab khi thực hiện định dạng tự động. Tôi đã làm việc ở chế độ nxml, nhưng tôi nghĩ nó sẽ hoạt động với mọi chế độ.