在文本模式下在Emacs中设置4个空格缩进
在使用主模式text-mode
按下缓冲区中的TAB时,我无法让Emacs从8个空格制表符切换到4个空格制表符。 我已将以下内容添加到我的.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个空格?
(customize-variable (quote tab-stop-list))
或在.emacs文件中将制表符停止列表条目添加到自定义设置变量中:
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120))))
简短的回答:
关键是告诉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个空格即可。
当number-sequence
功能坐在那里等待使用时,它总会让我轻微看到像(setq tab-stop-list 4 8 12 ................)
这样的东西。
(setq tab-stop-list (number-sequence 4 200 4))
要么
(defun my-generate-tab-stops (&optional width max)
"Return a sequence suitable for `tab-stop-list'."
(let* ((max-column (or max 200))
(tab-width (or width tab-width))
(count (/ max-column tab-width)))
(number-sequence tab-width (* tab-width count) tab-width)))
(setq tab-width 4)
(setq tab-stop-list (my-generate-tab-stops))
链接地址: http://www.djcxy.com/p/28631.html