Emacs之default-tab-width与tab-width用法总结(一百二十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:Emacs之default-tab-width和tab-width用法区别与总结。

2.default-tab-width与tab-width功能介绍

<1>.default-tab-widthtab-width 是两个相关的变量,它们控制着制表符(Tab)的显示和缩进行为。

  1. default-tab-width: 这个变量用于指定默认的制表符宽度。它控制着当你使用制表符进行缩进时,每个制表符所占据的字符宽度。默认情况下,default-tab-width 的值是 8。但是,很多时候,你可能希望将制表符宽度设置为其他值,比如 4 或 2。你可以通过设置 default-tab-width 来实现这个效果。

    (setq-default default-tab-width 4)
    

    这将把 default-tab-width 的值设置为 4,即每个制表符占据 4 个字符宽度。

  2. 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-widthtab-width 两个变量都可以用于设置制表符的宽度,但它们具有不同的作用范围和优先级。

  1. default-tab-width

    • 作用范围:全局(Global)作用范围,影响所有 Emacs 缓冲区。
    • 优先级:当没有其他缩进设置时,Emacs 使用 default-tab-width 来确定缩进的宽度。
    • 示例:
      ;; 设置全局的默认制表符宽度为 4
      (setq default-tab-width 4)
      
  2. 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)))

你可能感兴趣的:(Emacs,emacs,编辑器)