如何让Emacs使用制表符而不是空格?

Ghe*_*man 6 emacs tabs elisp space indentation

我已经将一个indent-for-tab-command命令绑定到一个键,我希望它能够像使用标签一样进行智能模式特定的缩进.在所有模式中.它总是插入空格而不是制表符.如何重新配置​​/重新编程呢?

我想将Emacs用作完全可定制的编辑器,因为它已宣布为.这样它的行为就像我想要的那样.我根本不关心开发人员的意见,并希望自定义一切.这是错的吗?

Chr*_*ris 9

并非所有主要模式都以相同的方式处理缩进,因此您可能必须对某些模式进行一些调整才能获得所需的行为.通常他们会有自己的缩进设置,例如cperl-indent-level.

cc-mode类似C语言的基础模式中,类似这样的东西应该做你想要的:

(setq-default indent-tabs-mode t)
(setq-default tab-width 4) ; Assuming you want your tabs to be four spaces wide
(defvaralias 'c-basic-offset 'tab-width)
Run Code Online (Sandbox Code Playgroud)

请注意,使用制表符进行缩进时可能会出现一些有趣的情况.EmacsWiki 缩进基础页面值得一读,如果只是为了理解Emacs如何处理缩进与其他编辑器不同.

编辑:

因为ruby-mode,这应该工作(假设你已经设置tab-width如上):

(setq ruby-indent-tabs-mode t)
(defvaralias 'ruby-indent-level 'tab-width)
Run Code Online (Sandbox Code Playgroud)

对于sgml-mode衍生模式,包括html-mode:

(defvaralias 'sgml-basic-offset 'tab-width)
Run Code Online (Sandbox Code Playgroud)