4

我喜欢 Emacs,但不喜欢它的缩进方式:要么是制表符和空格的无法控制的混合,要么只是空格 ( (setq indent-tabs-mode nil))。

我希望 Emacs 做缩进:

  1. 仅使用标签。

  2. 缩进到固定数量的位置(有时不是 6 个,有时是 8 个,在其他一些地方是 4 个)。

  3. 能够将一级缩进设置为等于 4(或 2)个空格。

  4. 如果我更改制表位的值,所有新打开或重新加载的文件都应使用新值(或者此更改是否仅受重新启动 Emacs 影响?)

以上都是可能的吗?或包中的一些设置.emacs

大多数 IDE(例如 Eclipse)都提供上述功能。

4

3 回答 3

8

智能标签会根据上下文插入标签和空格。

就我个人而言,我只将空格用于缩进和对齐(至少对于我自己的项目)。是 emacswiki 上的另一篇文章,我发现关于该主题非常有用

于 2012-07-09T20:25:13.403 回答
3

对于 C/C++/Java,您可以尝试在模式挂钩中添加相同的制表符宽度、缩进级别和 c-basic-offet:

(defun my-c-mode-common-hook ()
  (setq c-indent-level 3
    c-brace-offset -3)
  (setq c-basic-offset 3)
  (setq-default tab-width 3)
  (setq tab-width 3))

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

这使得当您处于 cc 模式时,制表符和缩进是相等的,因此 emacs 将始终选择制表符而不是空格。另见缩进 C

tab-width可以在其他地方设置,您可以将其与缩进长度变量(如 python 的 python-indent )一起应用于其他模式


编辑:

实际上,看起来 kindahero 的链接几乎是这样做的:http ://www.emacswiki.org/SmartTabs

于 2012-07-04T08:06:12.467 回答
3

我使用制表符进行缩进。但是当其他人使用不同的编辑器时,他们可以看到缩进消失了。因此,您可以选择使用制表符缩进的代码段并运行“Mx untabify”。这会将选项卡替换为空白,因此使用不同编辑器的用户不会出现第一个问题。

于 2012-10-07T11:56:43.020 回答