从上一篇文章中,我得到了在 emacs 中工作的 Ruby 模式。这很好用。
我们公司使用 4 个空格代替默认的 2 个缩进。我很难让它工作。
这是我的 .emacs 文件
(添加到列表'加载路径“〜/ rdoc-mode.el”)
(需要'红宝石模式)
(setq indent-tabs-mode nil) ; 总是用空格替换制表符
(setq-default tab-width 4) ; 将所有缓冲区的制表符宽度设置为 4
有谁看到我做错了什么?
谢谢!
从上一篇文章中,我得到了在 emacs 中工作的 Ruby 模式。这很好用。
我们公司使用 4 个空格代替默认的 2 个缩进。我很难让它工作。
这是我的 .emacs 文件
(添加到列表'加载路径“〜/ rdoc-mode.el”)
(需要'红宝石模式)
(setq indent-tabs-mode nil) ; 总是用空格替换制表符
(setq-default tab-width 4) ; 将所有缓冲区的制表符宽度设置为 4
有谁看到我做错了什么?
谢谢!
该tab-width
设置仅控制制表符的宽度,即在缓冲区中显示时制表符相当于多少个空格。它不会影响用于缩进代码的空格(或制表符)的数量。
对于 Ruby 代码,缩进由ruby-indent-level
变量控制:
(setq ruby-indent-level 4)
其他发帖人已经提供了正确答案,所以我将在这里提到如何找出这类问题的答案。
首先,既然您正确地假设缩进宽度是可配置的,那么首先要尝试的是:
M-x customize-group RET ruby-mode RET
果然,定制选项之一是“Ruby Indent Level”。您可以设置它并保存更改。完毕!
或者,您可以查看 ruby-mode 本身:
M-x find-library RET ruby-mode RET
然后搜索(使用 Cs)“缩进”。在那里你会找到一个变量定义:
(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 被描述为“自我记录”的原因!
有一种方法可以在不接触 .emacs 的情况下做到这一点。您可以在每个 Ruby 文件的末尾放置一个特殊的注释块,用于设置特定于该文件的“文件变量” 。任何编辑该文件的 emacs 或 xemacs 都将使用该注释块中的模式、选项卡设置等。
例如,这里是我们用于 Ruby 开发的“文件变量”块:
# Local Variables:
# mode: ruby
# tab-width: 2
# ruby-indent-level: 2
# indent-tabs-mode: nil
# End: