2011-02-28 21 views
24

Vì nhiều lý do tôi muốn định cấu hình trình chỉnh sửa của mình để chèn dấu cách khi nhấn TAB.Emacs: Chèn tab thay vì dấu cách

Nhưng gần đây tôi đã phát hiện ra rằng các tab sẽ vẫn là tab trong tạo tệp.

Làm cách nào để chèn tab (\t, không " ") mà không cần định cấu hình lại trình chỉnh sửa mỗi lần tôi cần viết tệp?

Tôi sử dụng các trình chỉnh sửa sau: Emacs, Kate, gedit và trình chỉnh sửa Visual Studio.

Trả lời

8

Chế độ Makefile của Emacs sẽ xử lý vị trí chèn các tab và khoảng trắng miễn là bạn nhấn các phím phải ở đúng vị trí. Hoặc là, hoặc tôi đã bỏ lỡ một số chi tiết trong câu hỏi.

+3

Có, đối với emacs, việc chèn tab thay vì không gian sẽ tự động nếu bạn ở chế độ makefile (hoặc chế độ BSDmakefile). Nếu bạn bằng cách nào đó cần phải chèn một tab khi bạn không thể do cấu hình sai lầm sử dụng "C-q tab". –

55

Để chèn thủ công tab trong Emacs, hãy sử dụng ctrl-Q TAB. control-Q làm cho khóa tiếp theo được chèn vào thay vì được hiểu là lệnh có thể.

+1

cũng hoạt động. cảm ơn. – pic11

+3

Làm thế nào đến đây không phải là câu trả lời được chấp nhận? – Nikhil

+0

Cảm ơn bạn, điều đó đã khiến tôi lo lắng một thời gian. – Vincent

0

Phần Smart inference of indentation style của trang Không may trên EmacsWiki rất hữu ích. Nó cho bạn thấy cách thiết lập khoảng trống cho hầu hết các dự án, nhưng chuyển sang tab nếu tệp bạn đang chỉnh sửa có nhiều dòng bắt đầu bằng tab hơn các dòng bắt đầu bằng dấu cách.

Dưới đây là các mã:

(defun infer-indentation-style() 
    ;; if our source file uses tabs, we use tabs, if spaces spaces, and if   
    ;; neither, we use the current indent-tabs-mode        
    (let ((space-count (how-many "^ " (point-min) (point-max))) 
     (tab-count (how-many "^\t" (point-min) (point-max)))) 
    (if (> space-count tab-count) (setq indent-tabs-mode nil)) 
    (if (> tab-count space-count) (setq indent-tabs-mode t)))) 

[trong móc c-mode của tôi, hoặc bất kỳ phương tiện khác mà tôi muốn có thụt đầu dòng smart]

(setq indent-tabs-mode nil) 
(infer-indentation-style) 

Điều này có thể vẫn là một vấn đề khi chỉnh sửa các tệp mới phải luôn có các tab như makefiles. Đối với những người, móc chế độ của bạn sẽ chỉ cần đặt nó vào các tab. Ví dụ:

(add-hook 'makefile-mode-hook 
    '(lambda() 
    (setq indent-tabs-mode t) 
    ) 
)