emacs:要使用制表符缩进(制表符大小2或4)并用空格对齐吗

emacs:要使用制表符缩进(制表符大小2或4)并用空格对齐吗,emacs,tabs,indentation,spaces,tab-size,Emacs,Tabs,Indentation,Spaces,Tab Size,我现在使用emacs有一段时间了,并且在大多数情况下都喜欢它(对ssh有用,语法突出显示,…) 但当涉及到代码的缩进和对齐(对齐)时,我并不清楚emacs 我希望在我的所有代码(SQL、C、Java、ECMAScript、HTML、PHP、CSS等等)中,按下“TAB”键可以真正生成一个制表符(我通常有2个空格,但4或6个也可以)。[我同意,当涉及对齐时,代码中的制表符是有害的,但当涉及缩进时,空格也是有害的!]您可以看看,我希望如何在HTML模板中使用它: 另一方面,我总是与空格对齐,所以其

我现在使用emacs有一段时间了,并且在大多数情况下都喜欢它(对ssh有用,语法突出显示,…)

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

我希望在我的所有代码(SQL、C、Java、ECMAScript、HTML、PHP、CSS等等)中,按下“TAB”键可以真正生成一个制表符(我通常有2个空格,但4或6个也可以)。[我同意,当涉及对齐时,代码中的制表符是有害的,但当涉及缩进时,空格也是有害的!]您可以看看,我希望如何在HTML模板中使用它:

另一方面,我总是与空格对齐,所以其他程序员在我的代码中正确对齐了所有的等号。这很好,但有两个例外:

  • 要输入制表符,我必须始终按“CTRL-QTab”,这很烦人
  • emacs中配置了不同的编程语言,以使用不同的选项卡大小。对于我自己,我总是希望选项卡的大小为2个空格
  • 我怎样才能做到这一点

    a) 按TAB键总是插入TAB字符


    b) 选项卡在所有emacs模式下(c、java、html、php、css、ecmascript等)都有2个字符宽?

    正如@lawlist所说,每个主要模式都不同。每个标签通常都有自己的
    缩进行功能
    ,并且
    标签宽度
    等设置都是缓冲区本地设置

    有一个
    smart-tabs
    package()适合我,但我只在类似C的模式下使用它(这并不是说它不适合其他模式,我只是没有尝试过)

    选项卡宽度
    应该全局设置为您首选的宽度,并且可以在主模式钩子中更改,以便在某些模式中有所不同

    (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)
    
    a) 在emacs配置文件中将
    indent tabs mode
    的值设置为非nil。
    (setq默认缩进制表符模式t)
    应该可以做到这一点。

    b) 同样,将
    选项卡宽度的值设置为所需的宽度。
    
    (设置默认选项卡宽度2)
    在您的情况下。

    C-q选项卡
    将插入一个选项卡。每个主要模式都可以设置不同的内容,有些模式有自己的变量,需要进行定制以实现预期的结果。因此,专注于只设置一个主要模式,然后继续设置下一个模式,直到满意为止。下面是一个示例链接,可以帮助您入门:另请参见:我的配置文件中已经有两个“setq default”。一些主要的模式覆盖了我的行为。但是谢谢你的链接,谢谢你的回答。我以前看过“智能标签模式”,现在下载了“智能标签模式.el”,并从我的配置文件中加载它。不幸的是,您上面提到的代码(尤其是“使用包”)不起作用。我收到消息:
    调试器已输入--Lisp错误:(void function use package)
    。该怎么做,才能使用“use package”命令?我终于用“smart tabs mode.el”让它工作了。我不使用您的
    使用包
    代码,只需加载
    智能标签模式.el
    ,然后运行暗示代码:
    (智能标签暗示'c'c++'java'javascript'cperl'python'ruby'nxml)
    。工作@iGeeks
    use package
    是安装和配置软件包的常用方法,但它不是内置的。我很懒,只是粘贴配置文件,而不是将其转换为内置命令。
    (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)