在Emacs中全局禁用自动缩进

mso*_*orc 12 emacs indentation auto-indent

如何在全局或仅在某些模式下禁用Emacs中的自动缩进?

我为RubyOnRails安装了许多软件包(ruby,html,js,css).

假设我想禁用css-mode的autoindent.

dav*_*all 5

对我来说,在emacs 24.x上,M-xelectric-indent-mode切换了我想禁用的行为。

FWIW,行为是RET绑定到...中newline定义的命令的simple.el。除其他外,该命令的行为由更改electric-indent-mode

  • 下次我的Enter键不能执行我想要的操作时,我会记得只是按“ Ch k RET”来查看它绑定到了什么功能/命令。 (2认同)

phi*_*ils 4

您可能想要查找包含单词 的变量名称electric。(这是 Emacs 的常见说法,指的是在键入特定可见字符时自动发生的操作。)

在本例中,M-x apropos-variable RET electric RET向我显示有一个css-electric-keys变量包含“应触发重新缩进的自插入键”列表。

您可以M-x customize-variable RET css-electric-keys RET将此列表设置为 nil,或添加(setq css-electric-keys nil)到您的 init 文件中。

有时,使用次要模式来实现电动行为,以便您可以更轻松地打开和关闭它们。这些可能会通过 找到M-x apropos-command RET electric RET,并且您可能会使用主要模式挂钩来确保禁用电动次要模式,其方式与此类似:

(add-hook 'MAJORMODE-mode-hook 'my-MAJORMODE-mode-hook)
(defun my-MAJORMODE-mode-hook ()
  (ELECTRICMODE-mode 0))
Run Code Online (Sandbox Code Playgroud)

  • 我最好的建议是尽可能熟悉 Emacs 的自记录性质以及围绕此功能的命令。对于 javascript 模式,我使用 `Mx find-function RET javascript-mode RET` 打开定义它的源文件,然后简单地搜索“auto”并很快在此变量中找到适当的命中:`Ch v js-auto- indent-flag RET`(它恰好是可定制的,所以你也可以通过使用`Mxcustomize-group RET js RET`找到它(“javascript”会更好,但“js”是一个相当明显的第二个猜测)。 (4认同)