如何在Emacs JavaScript模式下更改缩进宽度


120

我想使用2个空格而不是4个缩进。我可以使用以下方式更改C模式的默认行为:

(setq c-basic-offset 2)

如何在javascript模式下更改此设置?

Answers:


198

js-indent-level 可以在默认的javascript模式下使用,默认情况下从emacs 23.2开始包含。

(setq js-indent-level 2)

应该做你想要的。如果您使用的是旧版本的emacs,则可能处于Java模式。我认为此模式可以响应c-basic-offset,但是我可能是错的。


2
(setq default-tab-width 2)将是Java模式的相应制表符宽度设置器
Fergie

使用此机制,制表符宽度保持为8,因此仅当缩进级别为4(2x4 = 8)或更大时才使用制表符。如何将制表符宽度设置为2或4,以便使用制表符而不是空格?我尝试了很多设置,例如(setq tab-width 4),但无济于事。我的目标:使用制表符宽度4,并且仅使用制表符(不能用空格代替)。
jdp 2012年

jdp:试试看(defun my-javascript-mode-hook () (setq indent-tabs-mode t tab-width 4 js-indent-level 4)) (add-hook 'javascript-mode-hook 'my-javascript-mode-hook)
菲尔2014年

js-mode-hook像这样使用:(defun my-js-mode-hook () (setq indent-tabs-mode t tab-width 4 js-indent-level 4)) (add-hook 'js-mode-hook 'my-js-mode-hook)
skeltoac,2014年

6
这在任何地方都有记录吗?有没有一种方法可以在没有stackoverflow的情况下找到此信息?我M-x h从js模式查看,但在那里找不到任何内容。
查尔斯·霍尔布鲁

75

希望有人早点告诉我有关Custom的信息!也许这会帮助另一个像我这样的凡人;)

调用自定义:

M-x customize

然后,选择“编程”,然后选择“语言”,然后选择要自定义的语言/模式。根据需要编辑选项。完成后,选择“保存为当前会话”或“保存为将来的会话”。


17

如果您使用的是js2-mode(功能更强大的IMHO),则命令为:

(setq-default js2-basic-offset 2)

资源。


11

您可能还希望将emacs设置为使用空格而不是制表符

(setq-default indent-tabs-mode nil)

这是评论,而不是实际答案。赢得更多声誉可以发表评论。
jcubic 2014年

2

在我的javascript.el文件(/ usr / share / emacs / site-lisp)中,我发现

javascript-indent级4

因此,如果您使用相同的Lisp模式,则可以通过运行来更改它

(setq javascript-indent-level 2)

2

您也可以使用

M-x customize-variable

和类型

js-indent-level

js-[TAB]显示选项列表)。然后Js Indent Level根据需要更改,然后单击[State:]并保存。



2

如果要按文件进行更改,请将其放在文件顶部:

// -*- mode: js; js-indent-level: 2; -*-

0

在升级到Emacs 26之后,这些解决方案都不对我有用(我已经将其js-indent-level设置为2,但是制表符宽度又回到了8),但是有效的方法是将tab-width变量设置为2,这似乎替代了旧的default-tab-width变量。

M-x customize通过搜索找到了tab width

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.