TAB使用主模式按下缓冲区时,我一直没有成功让Emacs从8个空间制表符切换到4个空间制表符text-mode
。我已将以下内容添加到我的.emacs
:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
;;; And I have tried
(setq indent-tabs-mode nil)
(setq tab-width 4)
无论我如何更改我的.emacs
文件(或我的缓冲区的局部变量),TAB按钮始终会执行相同的操作。
尽管我爱Emacs,但这变得令人讨厌。有没有办法让Emacs在上一行没有文本的情况下至少缩进4个空格?
发布于 2018-03-22 17:26:54
关键是告诉emacs在缩进时插入任何你想要的东西,这是通过改变缩进线功能来完成的。将它更改为插入一个选项卡然后将选项卡更改为4个空格而不是将其更改为插入4个空格更容易。以下配置将解决你的问题:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)
来自缩进由Major Mode @ emacs手动控制:
每种主要模式的一个重要功能是自定义键以正确缩进正在编辑的语言。 [...] indent-line-function变量是由(和各种命令使用的,比如在调用缩进区域时)缩进当前行的函数。indent-by-to-mode命令只不过是调用这个函数。 [...] 默认值是许多模式的缩进相对值。
来自indent-relative @ emacs手册:
缩进相对空间在前一个非空行的下一个缩进点之前。 [...] 如果前一个非空行在列起始点之后没有缩进点,那么将执行“制表符到制表符”。
只需将indent-line-function的值更改为insert-tab函数,并将tab插入配置为4个空格即可。
https://stackoverflow.com/questions/-100007738
复制相似问题