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

Nat*_*ate 30 emacs elisp

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

Sea*_*ean 27

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

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

(setq mac-command-modifier 'meta
      mac-option-modifier 'super)
Run Code Online (Sandbox Code Playgroud)

set-variable 不能那样做.


unu*_*tbu 11

setq是一种特殊形式,同时set-variable也是一种互动功能.

来自文档:

对我来说,该set-variable命令的主要用途 是建议我可能想要在我的.emacs文件中设置的变量.现在有700多个这样的变量 - 太多不容易记住了.幸运的是,您可以<TAB>在调用M-x set-variable命令后 按下以查看变量列表.