Tôi đồng ý với Tyler; mặc dù nó có một chút phức tạp, bạn sẽ tốt hơn trong thời gian dài nếu bạn cố gắng hiểu và tùy chỉnh các tính năng thụt lề mặc định. Emacs Wiki có good resources và có relevant Q&As khác ở đây trên Stack Overflow.
Ràng buộc khóa tab là insert-tab
có nghĩa là bạn hoàn toàn mất lợi ích của số lượt thích indent-region
và mọi hành vi thông minh khác mà chế độ chính có thể cung cấp.
Để giải quyết câu hỏi cụ thể của bạn bất kể, tuy nhiên:
1) Nếu bạn đang định (java-insert-tab)
và (css-insert-tab)
và (javascript-insert-tab)
vv, và tất cả họ đều thực hiện chính xác những điều tương tự ... tốt, hy vọng bạn có thể thấy rằng bạn don 't thực sự cần nhiều hơn một trong những chức năng đó. Chỉ cần cung cấp cho nó một tên chung hơn, và tái sử dụng nó.
2) (local-set-key ...)
thực hiện tương tự như (define-key (current-local-map) ...)
, có nghĩa là bạn cũng có thể có một hàm chung chung để ghi đè khóa tab, bất kể chế độ chính.
(defun my-coding-config()
(setq tab-width 4)
(setq indent-tabs-mode t)
(local-set-key (kbd "<tab>") 'my-insert-tab))
(defun my-insert-tab (&optional arg)
(interactive "P")
(insert-tab arg))
Sau đó, bạn chỉ cần thêm my-coding-config
vào mỗi biến móc chế độ áp dụng. Nếu có rất nhiều trong số họ, bạn có thể quấn nó lên trong một danh sách như thế này:
;; Use my coding hook for all programming modes
(mapcar
(lambda (language-mode-hook)
(add-hook language-mode-hook 'my-coding-config))
'(java-mode-hook
javascript-mode-hook
css-mode-hook
...))
3) Nếu bạn nhìn vào Ch vtab-width
RET và tương tự như vậy cho indent-tabs-mode
, bạn sẽ nhận thấy rằng cả hai đều nói "Tự động trở thành bộ đệm cục bộ khi được đặt trong bất kỳ thời trang nào".
Để thay thế cho giao diện tùy chỉnh đã được đề cập, bạn có thể sử dụng (set-default 'indent-tabs-mode t)
để thiết lập giá trị mặc định cho các biến như vậy. Trong trường hợp không có mã đặt giá trị bộ đệm cục bộ, tất cả các bộ đệm của bạn sẽ sử dụng mặc định, điều này có thể giúp bạn tránh viết các móc chế độ không cần thiết.
Cảm ơn bạn đã trả lời, tôi sẽ dùng thử và xem nó hoạt động như thế nào, mặc dù nó có thể phức tạp hơn một chút đối với tôi. – YTKColumba