Spacemacs设置制表符宽度

40

我刚从VIM迁移到了Spacemacs,想将制表符宽度从默认值(\t?)改为仅为2个空格。我找到了一些命令,如下:

(setq-default indent-tabs-mode nil)

并且

(setq tab-width 4) ; or any other preferred value
(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'cperl-indent-level 'tab-width)

我的问题是我不知道它们是否正确,以及在.spacemacs文件中应该在哪里插入它们,以及它们的含义。

2个回答

55

我找到了这篇文章:http://blog.binchen.org/posts/easy-indentation-setup-in-emacs-for-web-development.html

我将以下代码段添加到我的.spacemacs文件中的任意函数外(但在(defun dotspacemacs/user-init () ... )之前):

(defun my-setup-indent (n)
  ;; java/c/c++
  (setq c-basic-offset n)
  ;; web development
  (setq coffee-tab-width n) ; coffeescript
  (setq javascript-indent-level n) ; javascript-mode
  (setq js-indent-level n) ; js-mode
  (setq js2-basic-offset n) ; js2-mode, in latest js2-mode, it's alias of js-indent-level
  (setq web-mode-markup-indent-offset n) ; web-mode, html tag in html file
  (setq web-mode-css-indent-offset n) ; web-mode, css in html file
  (setq web-mode-code-indent-offset n) ; web-mode, js code in html file
  (setq css-indent-offset n) ; css-mode
  )

并添加了这一行

(my-setup-indent 2) ; indent 2 spaces width

将内容插入到 (defun dotspacemacs/user-init () ... ) 中,如下所示:

(defun dotspacemacs/user-init ()
  "Initialization function for user code.
It is called immediately after `dotspacemacs/init', before layer configuration
executes.
 This function is mostly useful for variables that need to be set
before packages are loaded. If you are unsure, you should try in setting them in
`dotspacemacs/user-config' first."
  (my-setup-indent 2) ; indent 2 spaces width
  )

28

您也可以通过在Spacemacs中调用customize-variable命令并将standard-indent变量设置为2来自定义缩进。这将保存定制内容到您的.spacemacs文件中。

编辑:

要运行“customize-variable”命令,请使用热键M-x(大多数系统上为alt-x),然后在提示符中键入customize-variable。

您可以使用搜索功能搜索“standard-indent”。


2
你能更详细地解释一下如何做吗?抱歉,我对spacemacs还不熟悉。 - aviggiano
7
您需要按下 SPC SPC,然后在 helm(或 ivy)弹出的缓冲区中输入 customize-variable,选择该条目并按 Enter 键。在新的缓冲区中,您需要输入 standard-indent 并按 Enter 键。在新窗口中,将变量从默认值 4 更改为 2,然后单击 Apply and Save - Michael Gecht
2
通过输入 q,您可以退出 Easy Customization 界面。 - Benjamin R
为什么这不是被接受的答案?看起来不那么hacky。 - jake
@jake 我认为这是因为另一个答案一次性设置了许多模式的间距。使用自定义组,你需要逐个设置所有模式的缩进值,这有点繁琐。 - Vance Palacio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接