如何使Emacs使用制表符代替空格?

问题描述 投票:6回答:2

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

我想将Emacs用作完全可定制的编辑器,就像它宣布的那样。这样它就可以像我想要的那样运行。我根本不关心开发人员的意见,而是想要自定义所有内容。这是错误的吗?

emacs tabs elisp indentation space
2个回答
9
投票

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

在类似C的语言的基于cc-mode的模式下,类似这样的操作应该可以满足您的要求:

(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)

请注意,使用制表符缩进时会出现一些有趣的情况。如果仅要了解Emacs与其他编辑器如何区别缩进,则值得阅读EmacsWiki indentation basics页面。

编辑:

对于ruby-mode,这应该可以工作(假设您已经如上所述设置了tab-width):

(setq ruby-indent-tabs-mode t)
(defvaralias 'ruby-indent-level 'tab-width)

对于sgml-mode派生的模式,包括html-mode

(defvaralias 'sgml-basic-offset 'tab-width)

0
投票

(setq-default indent-tabs-mode nil)放入您的.emacs文件。

https://www.emacswiki.org/emacs/NoTabs

© www.soinside.com 2019 - 2024. All rights reserved.