Emacs 使用 Tab 缩进

Emacs 使用 Tab 缩进

有没有办法让 Emacs 全局仅使用制表符而不是空格来缩进代码。我知道 tabify 命令。我更喜欢自动缩进使用制表符,而不是像默认配置那样混合使用制表符和空格。

答案1

好吧,要使用制表符缩进,您需要确保它indent-tabs-modet(这是默认值)。但要得到仅有的选项卡,您需要调整进行缩进的模式,以便每行缩进的倍数tab-width(默认 8)。例如,在C模式下,您可以尝试设置c-basic-offset为8。

或者,您可以将 减小tab-width到更小的值,以便 Emacs 不需要使用空格来达到每个缩进级别。但如果您这样做,所有其他必须处理您的代码(并使用标准 8 字符制表位)的人都会感到恼火。

我敦促你重新考虑。就我个人而言,我发现处理带有制表符缩进的代码很烦人,特别是如果它们看起来不是 8 个空格制表符的话。 (最糟糕的是代码中有些行使用空格,有些行使用制表符,而且显然不是 8 个空格制表符。)请帮我们大家一个忙,只是(setq indent-tabs-mode nil).

答案2

Emacs 附带了几种预定义的 C 缩进样式,或者您也可以写你自己的如果没有一个适合您的需求。其中标准款式,看来您正在寻找linux(Linux内核源代码中使用的样式),它具有8列缩进并使用宽度为8的制表符。

您可以将这些设置设置为 C 的默认样式,方法是将其放入您的.emacs

(setq c-default-style "linux")
(defun my-c-mode-hook ()
  (setq indent-tabs-mode t)
  (setq tab-width 8))
(add-hook 'c-mode-hook 'my-c-mode-hook)

不过,请确保在与具有不同偏好的其他人协作时不使用这些设置。特别是,使用制表符会让你们成为敌人。如果要以特定样式保存特定文件,您可以使用文件变量确保在 Emacs 中编辑文件的每个人都使用相同的设置:

/*
 * Local Variables:
 * c-file-style: "linux"
 * indent-tabs-mode: t
 * tab-width: 8
 * End:
 */

如果您的整个项目具有类似缩进的 C 文件,请使用目录变量而不是污染每个文件。创建一个名为的文件,.dir-locals.el其内容如下:

((c-mode . ((c-file-style . "linux")
            (indent-tabs-mode . t)
            (tab-width . 8))))

答案3

制表符让我很烦恼,但我必须弄清楚如何让 emacs 仅使用制表符进行缩进,以便我可以处理别人的代码。这对我有用:

(defun tmp/change-indent ()
  (interactive)
  (setq indent-tabs-mode t)
  (setq tab-width 2))

我注意到,在搞乱任何事情之前,当我按下 Tab 键时,它会自动缩进 2 列。设置“tab-width”以匹配 2 列偏移量允许 emacs 在执行自动格式时使用制表符。我当时在 nxml 模式下工作,但我认为这应该适用于任何模式。

相关内容