我需要能够为以下文件类型设置选项卡设置:
我尝试了以下内容,但似乎都没有改变每种文件类型的默认选项卡设置.
;; js-mode-hook has also been tried
(add-hook 'javascript-mode-hook
'(lambda()
(setq tab-width 4)))
(add-hook 'css-mode-hook
'(lambda()
(setq tab-width 4)))
(add-hook 'html-mode-hook
'(lambda()
(setq tab-width 8)))
Run Code Online (Sandbox Code Playgroud)
我对emacs很新,所以我对配置的了解非常少.
Vit*_*hKa 29
在emacs中,每种模式都有自己的缩进样式.缩进(绑定TAB)的主要命令是indent-for-tab-command.此命令调用变量中找到的特定于模式的缩进函数indent-line-function.所以每种模式都有自己的方式.
对于Ruby(我的emacs 2是默认值):
(setq ruby-indent-level 2)
Run Code Online (Sandbox Code Playgroud)
对于CSS(同样,默认值为4):
(setq css-indent-offset 4)
Run Code Online (Sandbox Code Playgroud)
不幸的是,SGML模式(HTML模式所基于的)具有非常简单的缩进机制,显然该级别是不可配置的.查看sgml-calculate-indent函数的源代码.
我个人觉得很奇怪.我不是在写HTML,但你可以尝试自己修改这个sgml-calculate-indent函数:).学习一些口齿不清
我正在使用js2模式,默认情况下它会完美缩进.对于js,你必须搜索js-indent-level或类似的东西.
干杯.
Emacs如何进行缩进有很多方面.设置选项卡宽度仅指定插入文字选项卡时选项卡的大小.如果您不希望使用文字制表符进行缩进,则应首先禁用它们的插入(从手册中):
Emacs通常使用制表符和空格来缩进行.如果您愿意,所有缩进都只能从空格中进行.要请求此项,请将indent-tabs-mode设置为nil.这是一个每缓冲区变量,因此更改变量只会影响当前缓冲区,但是有一个默认值也可以更改.您也可以更改它.
但是,要指定缩进级别,您还需要设置c-basic-offset值变量:
(add-hook 'html-mode-hook
'(lambda()
(setq c-basic-offset 4)
(setq indent-tabs-mode nil))
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可能只需要c-basic-offset但尝试一些组合,看看什么效果最好.
js-mode使用js-indent-level如此放入(setq js-indent-level 4)你的〜/ .emacs(不应该在钩子中,甚至,但如果你想知道,它是js-mode-hook,而不是javascript-mode-hook).
如果设置tab-width不会更改特定模式的缩进级别,则通常最简单的方法是打开该模式的源.我发现这个变量C-h f js-mode,单击链接"js.el",然后搜索"缩进",从顶部第二次点击.
但是,如果您与其他人合作很多,最好将cookie放在文件的顶部.我通常// -*- tab-width: 8 -*-在文件中,然后我的〜/ .emacs中有这样的东西:
(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'cperl-indent-level 'tab-width)
(defvaralias 'perl-indent-level 'tab-width)
(defvaralias 'js-indent-level 'tab-width)
Run Code Online (Sandbox Code Playgroud)
这样我就可以处理更少的变量(并且不必得到关于文件局部变量不安全的警告,或者如果模式写入者忘记将其声明为安全的话)