将 emacs ruby​​-mode 缩进更改为 4 个空格

Posted

技术标签:

【中文标题】将 emacs ruby​​-mode 缩进更改为 4 个空格【英文标题】:change emacs ruby-mode indent to 4 spaces 【发布时间】:2011-01-07 20:05:17 【问题描述】:

从上一篇文章中,我得到了在 emacs 中工作的 Ruby 模式。这很好用。

Setting up .emacs file for mac ruby development

我们公司使用 4 个空格来表示缩进,而不是默认的 2 个。我很难让它工作。

这是我的 .emacs 文件

(add-to-list 'load-path "~/rdoc-mode.el")

(需要“红宝石模式”)

(setq indent-tabs-mode nil) ;总是用空格替换制表符

(setq-default tab-width 4) ;将所有缓冲区的选项卡宽度设置为 4

有人看到我做错了吗?

谢谢!

【问题讨论】:

tab-width 只控制 tab -> 空间扩展,不幸的是不控制 -mode 缩进。 【参考方案1】:

tab-width 设置仅控制制表符的宽度,即制表符在缓冲区中显示时相当于多少个空格。它不会影响用于缩进代码的空格(或制表符)的数量。

对于 Ruby 代码,缩进由 ruby-indent-level 变量控制:

(setq ruby-indent-level 4)

【讨论】:

你的公司很奇怪,其他所有 ruby​​ 公司都使用 2 个空格 :)【参考方案2】:

其他发帖者已经给出了正确答案,所以我将在此提及如何找出此类问题的答案。

首先,既然您正确地假设缩进宽度是可配置的,那么首先要尝试的是:

M-x customize-group RET ruby-mode RET

果然,自定义选项之一是“Ruby Indent Level”。您可以设置它并保存更改。完成!

或者,您可以查看 ruby​​-mode 本身:

M-x find-library RET ruby-mode RET

然后搜索(使用 C-s)“缩进”。在那里你会找到一个变量定义:

(defcustom ruby-indent-level 2 ...)

当你找到这样的变量时,你可以使用 setq 在你的 .emacs(或 ~/.emacs.d/init.el)中设置它:

(setq ruby-indent-level 4)

您还可以使用 apropos 发现该变量:

M-x apropos RET indent ruby RET

这就是为什么 emacs 被描述为“自我记录”的原因!

【讨论】:

【参考方案3】:

有一种方法可以在不接触 .emacs 的情况下做到这一点。您可以在每个 Ruby 文件的末尾放置一个特殊的注释块,为该文件设置"file variables"。任何编辑该文件的 emacs 或 xemacs 都将使用该注释块中的模式、选项卡设置等。

例如,这里是我们用于 Ruby 开发的“文件变量”块:

# Local Variables:
# mode: ruby
# tab-width: 2
# ruby-indent-level: 2
# indent-tabs-mode: nil
# End:

【讨论】:

以上是关于将 emacs ruby​​-mode 缩进更改为 4 个空格的主要内容,如果未能解决你的问题,请参考以下文章

Emacs Ruby 方法参数缩进

在 Emacs 的 C/C++ 模式下,将 #if 0...#endif 块中的代码面更改为注释面

在 Emacs 中以文本模式设置 4 空格缩进

如何让 Emacs Python 模式为缩进生成 TAB?

emacs配置文件

Emacs 代码根据现有代码自动设置 indent-tabs-mode