简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:Emacs之default-tab-width和tab-width用法区别与总结。
2.default-tab-width与tab-width功能介绍
<1>.default-tab-width
和 tab-width
是两个相关的变量,它们控制着制表符(Tab)的显示和缩进行为。
-
default-tab-width
: 这个变量用于指定默认的制表符宽度。它控制着当你使用制表符进行缩进时,每个制表符所占据的字符宽度。默认情况下,default-tab-width
的值是 8。但是,很多时候,你可能希望将制表符宽度设置为其他值,比如 4 或 2。你可以通过设置default-tab-width
来实现这个效果。(setq-default default-tab-width 4)
这将把
default-tab-width
的值设置为 4,即每个制表符占据 4 个字符宽度。 -
tab-width
: 这个变量用于控制代码缩进时使用空格的数量。它影响缓冲区的显示和编辑行为。当indent-tabs-mode
(是否使用制表符进行缩进)设置为nil
时,Emacs 将使用多个空格来模拟缩进,其中空格的数量由tab-width
指定。默认情况下,tab-width
的值是 8。(setq-default tab-width 4)
这将把
tab-width
的值设置为 4,即每个缩进级别使用 4 个空格。
总结来说,default-tab-width
控制指定缓冲区中显示制表符的宽度,而 tab-width
控制使用空格进行代码缩进时的空格数量。
虽然它们的名字相似,但它们的用途和影响范围是不同的
<2>.default-tab-width
和 tab-width
两个变量都可以用于设置制表符的宽度,但它们具有不同的作用范围和优先级。
-
default-tab-width
:- 作用范围:全局(Global)作用范围,影响所有 Emacs 缓冲区。
- 优先级:当没有其他缩进设置时,Emacs 使用
default-tab-width
来确定缩进的宽度。 - 示例:
;; 设置全局的默认制表符宽度为 4 (setq default-tab-width 4)
-
tab-width
:- 作用范围:缓冲区本地(Buffer-local)作用范围,可以对每个缓冲区进行单独设置。
- 优先级:如果某个缓冲区设置了
tab-width
,则会覆盖全局的default-tab-width
设置。 - 示例:
;; 设置当前缓冲区的制表符宽度为 2 (setq-local tab-width 2)
如果你想设置全局的默认制表符宽度,可以使用 default-tab-width
变量。而如果你想为某个特定缓冲区或文件类型单独设置制表符宽度,可以使用 tab-width
变量。
3.应用实例
v1.0 设置全局默认制表符宽度为 4
(setq default-tab-width 4)
v2.0 设置当前缓冲区的制表符宽度为 2
(setq-local tab-width 2)
v3.0 在 C++ 模式下设置制表符宽度为 8
(add-hook 'c++-mode-hook (lambda () (setq-local tab-width 8)))
v4.0 在 Python 文件中设置制表符宽度为 4
(add-hook 'python-mode-hook (lambda () (setq-local tab-width 4)))
v5.0 设置默认制表符宽度为 2,并针对 Markdown 文件单独设置为 4
(setq default-tab-width 2)
(add-hook 'markdown-mode-hook (lambda () (setq-local tab-width 4)))
v6.0 使用 setq-default
设置默认制表符宽度为 4,即使在没有缓冲区时也会生效
(setq-default default-tab-width 4)
v7.0 在特定模式下,如 Org 模式,设置制表符宽度为 2
(add-hook 'org-mode-hook (lambda () (setq-local tab-width 2)))