2

我现在使用 emacs 有一段时间了,并且在大多数情况下都喜欢它(在 ssh 上很有用,语法高亮,...)。

但是当涉及到代码的缩进和对齐(对齐)时,我对 emacs 不太清楚。

我希望在我的所有代码(SQL、C、Java、ECMAScript、HTML、PHP、CSS ......)中按下“TAB”键确实会生成一个 TAB 字符(我通常有 2 个空格的大小,但 4 或 6 也不错)。[我同意,代码中的 TAB 在对齐方面是邪恶的,但在缩进方面空格也是邪恶的!] 你可以看看,我想在我的 HTML 模板中如何使用它: https:/ /github.com/pheek/HTMLTemplate/blob/master/模板.html

另一方面,我总是与空格对齐,因此其他程序员在我的代码中正确对齐了所有等号。这工作正常,除了 2 个例外:

  1. 要输入 TAB-Char 我总是必须按“CTRL-q TAB”,这很烦人。
  2. 在 emacs 中配置了不同的编程语言以使用不同的 TAB 大小。就我自己而言,我总是希望将 TAB 设置为 2 个空格的大小。

我怎样才能做到这一点

a) 按 TAB 键总是插入一个 TAB 字符?

b) TAB 处于所有 emacs 模式(c、java、html、php、css、ecmascript、...)2 个字符宽?

4

2 回答 2

4

正如@lawlist 所说,每种主要模式都不同。每个通常都有自己的indent-line-function,并且像tab-width缓冲区这样的设置是本地的。

有一个smart-tabs包(https://github.com/jcsalomon/smarttabs)对我很有效,但我只将它用于类似 C 的模式(这并不是说它对其他人不起作用,我只是没有' t试过)。

(use-package smart-tabs-mode
  :commands (smart-tabs-mode)
  :init
  (add-hook 'c-mode-common-hook #'smart-tabs-mode)
  :config
  (smart-tabs-advice c-indent-line     c-basic-offset)
  (smart-tabs-advice c-indent-region   c-basic-offset)
  )

tab-width应该全局设置为您喜欢的宽度,并且可以在主要模式挂钩中更改为在某些模式下有所不同。

(setq-default tab-width 2)

(defun jpk/c-mode-common-hook ()
   (setq tab-width 4))
(add-hook 'c-mode-common-hook #'jpk/c-mode-common-hook)
于 2018-06-01T15:31:15.607 回答
1

indent-tabs-modea)在您的 emacs 配置文件 中将 的值设置为非零。(setq-default indent-tabs-mode t)应该做的伎俩。 https://www.gnu.org/software/emacs/manual/html_node/emacs/Indentation.html

b) 同样,将 的值设置tab-width为所需的宽度。 (setq-default tab-width 2)在你的情况下。 https://www.gnu.org/software/emacs/manual/html_node/efaq/Changing-the-length-of-a-Tab.html

于 2018-06-01T15:34:29.363 回答