emacs:想要缩进制表符(制表符大小 2 或 4)与空格对齐
emacs: Want to indent with tabs (tab-size 2 or 4) allign with spaces
我现在使用 emacs 一段时间并且在大多数情况下都喜欢它(对 ssh、语法高亮等很有用)。
但是说到代码的缩进和对齐(对齐),我对emacs不是很清楚。
我想要 我所有的代码 (SQL, C, Java, ECMAScript, HTML, PHP, CSS, ...) 按 "TAB" 键真的会生成一个 TAB 字符(我通常使用 2 个空格的大小,但 4 或 6 个也不错)。 [我同意,代码中的制表符在对齐方面是有害的,但空格在缩进方面也是有害的!]你可以看看,我想在我的 HTML 模板中使用它:
https://github.com/pheek/HTMLTemplate/blob/master/template.html
另一方面,我总是与空格对齐,所以其他程序员在我的代码中正确对齐了所有等号。这工作正常,除了 2 个例外:
- 要输入 TAB-Char,我总是必须按 "CTRL-q TAB",这很烦人。
- 不同的编程语言在emacs 中配置为使用不同的TAB 大小。对于我自己,我总是希望 TAB 的大小为 2 个空格。
我怎样才能做到这一点
a) 按 TAB 键总是插入一个 TAB 字符?
b) TAB 在所有 emacs 模式下 (c, java, html, php, css, ecmascript, ...) 2 个字符宽?
正如@lawlist 所说,每种主要模式都不同。每个通常都有自己的 indent-line-function
,像 tab-width
这样的设置是本地缓冲区。
有一个 smart-tabs
包 (https://github.com/jcsalomon/smarttabs) 对我来说效果很好,但我只将它用于类 C 模式(这并不是说它对其他人不起作用,我只是没试过)。
(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)
a) 在您的 emacs 配置文件中将 indent-tabs-mode
的值设置为非零。
(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
我现在使用 emacs 一段时间并且在大多数情况下都喜欢它(对 ssh、语法高亮等很有用)。
但是说到代码的缩进和对齐(对齐),我对emacs不是很清楚。
我想要 我所有的代码 (SQL, C, Java, ECMAScript, HTML, PHP, CSS, ...) 按 "TAB" 键真的会生成一个 TAB 字符(我通常使用 2 个空格的大小,但 4 或 6 个也不错)。 [我同意,代码中的制表符在对齐方面是有害的,但空格在缩进方面也是有害的!]你可以看看,我想在我的 HTML 模板中使用它: https://github.com/pheek/HTMLTemplate/blob/master/template.html
另一方面,我总是与空格对齐,所以其他程序员在我的代码中正确对齐了所有等号。这工作正常,除了 2 个例外:
- 要输入 TAB-Char,我总是必须按 "CTRL-q TAB",这很烦人。
- 不同的编程语言在emacs 中配置为使用不同的TAB 大小。对于我自己,我总是希望 TAB 的大小为 2 个空格。
我怎样才能做到这一点
a) 按 TAB 键总是插入一个 TAB 字符?
b) TAB 在所有 emacs 模式下 (c, java, html, php, css, ecmascript, ...) 2 个字符宽?
正如@lawlist 所说,每种主要模式都不同。每个通常都有自己的 indent-line-function
,像 tab-width
这样的设置是本地缓冲区。
有一个 smart-tabs
包 (https://github.com/jcsalomon/smarttabs) 对我来说效果很好,但我只将它用于类 C 模式(这并不是说它对其他人不起作用,我只是没试过)。
(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)
a) 在您的 emacs 配置文件中将 indent-tabs-mode
的值设置为非零。
(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