在Emacs中单独使用制表符进行缩进

时间:2012-07-04 05:56:44

标签: emacs ide indentation

我喜欢Emacs,但不喜欢缩进:无论是标签和空格的无法控制的混合还是空格((setq indent-tabs-mode nil))。

我希望Emacs做缩进:

  1. 仅使用标签。

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

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

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

  5. 以上所有可能吗? .emacs或包中的某些设置?

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

3 个答案:

答案 0 :(得分:8)

smart tabs会在上下文中插入制表符和空格。

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

答案 1 :(得分:3)

对于C / C ++ / Java,您可以尝试在模式挂钩中添加相同的tab-width,indent-level和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将始终选择空格上的标签。另请参阅Indenting C

可以在其他位置设置tab-width,您可以将其应用于其他模式以及缩进长度变量,例如python's python-indent


编辑:

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

答案 2 :(得分:3)

我使用标签进行缩进。但是当其他人使用不同的编辑器时,他们可以看到缩进消失了。因此,您可以选择使用制表符缩进的代码段并运行“M-x untabify”。这将使用空格替换选项卡,因此对​​于使用不同编辑器的用户而言,第一个所述问题将不存在。