我有一个关于Emacs Lisp的问题。setq和setq-default有什么区别?
教程说setq在本地缓冲区中生效,而setq-default影响所有缓冲区。
例如,如果我在init.el中写了(setq a-var a-vars-value),我发现在启动Emacs并打开新缓冲区后,a-var也在那里,其值为a-vars-value。我以为它不应该在那里。似乎setq和setq-default之间没有区别。
我的理解有什么问题吗?
例如:
我在init.el文件中写了(setq hello 123),然后在shell中运行emacs abuffer,然后输入“ hello Cx Ce”,显示为“ 123”。当我在所有新缓冲区中运行此命令时,也会发生相同的情况。
我在init.el文件中写了(setq tab-width 4)。当我运行tab-width Cx Ce时,它显示为“ 8”(当前模式为“文本”)。但是,当我使用(setq-default tab-width 4)时,它显示为“ 4”。我无法解释这种现象。