emacs中setq和set-variable有什么区别?

时间:2010-11-29 03:37:22

标签: emacs elisp

emacs lisp中setq和set-variable的区别是什么。我何时应该使用setq,何时应该设置变量。

3 个答案:

答案 0 :(得分:27)

set-variable是一个交互式命令,这意味着您可以键入 M-x set-variable RET 以交互式提示输入变量名称和值。 setq不是交互式命令,这意味着它只适合用Emacs Lisp代码编写。就个人而言,当我想给一个对我的文本编辑有直接影响的变量赋值时,我从不在我的Lisp代码中使用set-variable,只是交互式,例如(例如)设置indent-tabs-modetnil

另一个区别是setq可以一次设置多个变量。例如,在OS X上的.emacs文件中,我有:

(setq mac-command-modifier 'meta
      mac-option-modifier 'super)

set-variable不能这样做。

答案 1 :(得分:11)

setqspecial 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适用于任何变量,无论它是否为用户选项。