如何让 Emacs 自动重新缩进 Ruby 代码?
例如,在 Emacs 中使用 this,
def hello
puts "hello"
en
在我输入“d”后,我希望它变成这个,
def hello
puts "hello"
end
这是 Vim 中的默认设置,但如何在 Emacs 中实现呢?
ruby-electric
是旧闻。Emacs 24 有一个内置的次要模式electric-indent-mode
,称为自动在某些字符后插入换行符,您当然可以将RETURN
键重新映射到newline-and-indent
(默认情况下它仅映射到缩进)。在 Emacs 24 中,您可以获得匹配的分隔符,electric-pairs-mode
并且ruby-end
模式会在需要时自动end
为您插入。您可以查看prelude-ruby.el了解更多详细信息。
尝试自动缩进模式!
它不起作用,因为 Ruby 不知道您是否要键入以“end”开头的任何变量的“end”。所以打字Tab
重新缩进是必要的。以下配置对我来说效果很好。
; auto indent
(define-key global-map (kbd "RET") 'newline-and-indent)
(add-hook 'ruby-mode-hook (lambda () (local-set-key "\r" 'newline-and-indent)))