首页 文章

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

提问于
浏览
4

我喜欢Emacs,但不喜欢它是如何缩进的:要么是无法控制的标签和空格组合,要么只是空格( (setq indent-tabs-mode nil) ) .

我希望Emacs做缩进:

  • 仅使用标签 .

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

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

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

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

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

3 回答

  • 3

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

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

  • 8

    对于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

  • 3

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

相关问题