emacs lisp中setq和set-variable的区别是什么。我何时应该使用setq,何时应该设置变量。
答案 0 :(得分:27)
set-variable
是一个交互式命令,这意味着您可以键入 M-x set-variable RET 以交互式提示输入变量名称和值。 setq
不是交互式命令,这意味着它只适合用Emacs Lisp代码编写。就个人而言,当我想给一个对我的文本编辑有直接影响的变量赋值时,我从不在我的Lisp代码中使用set-variable
,只是交互式,例如(例如)设置indent-tabs-mode
到t
或nil
。
另一个区别是setq
可以一次设置多个变量。例如,在OS X上的.emacs文件中,我有:
(setq mac-command-modifier 'meta
mac-option-modifier 'super)
set-variable
不能这样做。
答案 1 :(得分:11)
setq
是special form,而set-variable
是互动功能。
来自the docs:
对我来说,主要用途set-variable
命令是建议的 我可能想要设置的变量 我的.emacs
文件。现在有更多 超过700这样的变量 - 远远超过 很多人要记住。幸好, 您可以在致电后按<TAB>
M-x set-variable
命令查看 变量列表。
答案 2 :(得分:3)
除了上面所说的,对于set-variable
,正如文档字符串所说:
VARIABLE should be a user option variable name, a Lisp variable meant to be customized by users.
setq
适用于任何变量,无论它是否为用户选项。