setq
和 setq-default
作用不一样,不存在「应该尽量用哪个」这种情况,需要用哪个就用哪个。
普通的变量只要一个值,setq-default
没有意义,应该直接用 setq
。
对于 buffer local 变量,这样的变量每一个 Buffer 都有一个独立的值,因为不是每一个 buffer 都主动会设置它,所以需要有一个「初始值」或者「默认值」或者「全局值」,创建新 buffer 会自动继承这个值,如果需要修改这个「默认值」就只能用 setq-default
;如果需要修改这个变量在当前 buffer的值就只能用 setq
。所以当使用 (setq-default foo ...)
时,你确认
-
foo
是个 buffer-local 变量 - 你想修改
foo
的「默认值」