(setq backup-directory-alist `(("." . "~/.saves")))
Run Code Online (Sandbox Code Playgroud)
我知道它正在设置保存备份文件的目录,但我不明白该`(("." . "~/.saves"))部件正在做什么.特别:
.内部可能是某种替换运算符,我注意到我有另一个类似的行用逗号代替.这些事情的作用是什么?我的google-fu在找出lisp中标点符号的作用时失败了,而且我懒得通过emacs lisp教程.
该文档backup-directory-alist确实解释了大部分内容.该值是一个关联列表,其中每个键都是正则表达式.简单的正则表达式"."匹配每个非空字符串,因此它适用于每个目录名称.
从头到尾读取关联列表,在Lisp中很容易添加新的关联:
(setq backup-directory-alist
(cons '("\\`/tmp/" . "/tmp/saves")
backup-directory-alist))
Run Code Online (Sandbox Code Playgroud)
......或者更简洁
(push '("\\`/tmp/" . "/tmp/saves") backup-directory-alist)
Run Code Online (Sandbox Code Playgroud)
...最终得到一个包含两个设置的列表:一个特定的路径,用于匹配"\\`/tmp/"前面的正则表达式的路径,如果是所有其他路径的通用路径.
alist键和值之间的点是cons,一个用于创建列表的基元.实际上,缺点比列表更简单,因此您可以直接获得值cdr,而不是概念上更复杂cadr(car的cdr).
我不认为你可以在那个位置使用逗号(虽然逗号在反引号中有用).