带有名为tilde(~)的文件夹的路径可以';emacs中的加载文件无法识别
我有一个文件夹带有名为tilde(~)的文件夹的路径可以';emacs中的加载文件无法识别,emacs,directory,tilde,Emacs,Directory,Tilde,我有一个文件夹/var/~/。在config.emacs中,我想从这个文件夹加载一些文件。 我尝试使用(加载文件“/var/~/foobar.el”),但emacs警告文件错误:无法打开加载文件,~/foobar.el。 此外,我甚至无法用c-x c-f打开此文件夹下的文件。在minibuffer中,路径将自动重定向到我家。 如何加载该文件夹中的文件?您需要重命名目录 load file是一个围绕load的简单包装器,它通过文件名中的替换传递给定的文件名。从文件名中的替换的文档字符串中(强调):
/var/~/
。在config.emacs
中,我想从这个文件夹加载一些文件。
我尝试使用(加载文件“/var/~/foobar.el”)
,但emacs警告文件错误:无法打开加载文件,~/foobar.el
。
此外,我甚至无法用c-x c-f
打开此文件夹下的文件。在minibuffer中,路径将自动重定向到我家。
如何加载该文件夹中的文件?您需要重命名目录
load file
是一个围绕load
的简单包装器,它通过文件名中的替换传递给定的文件名。从文件名中的替换的文档字符串中(强调):
替换文件名中引用的环境变量`$FOO'其中FOO是环境变量名称,表示替换
该变量的值。变量名应该终止
使用非字母、数字或下划线的字符;否则,请附上
大括号中的整个变量名
如果出现“/~”,则通过该“/”的所有文件名都将被丢弃。如果出现“//”,则包括第一个“/”在内的所有文件名都将被丢弃
换句话说,替换文件名
丢弃了/~
之前的所有内容,将/var/~/foo.el
转换为~/foo.el
我完全看不出这种行为有什么原因,但事实就是如此,你无法(轻松地)解决它,因此重命名是摆脱这种困境的最佳方法
无论如何,这样做是合理的。一般来说,在Unix系统上使用~
作为目录名是个坏主意,不仅仅是对于Emacs。lunaryorn很好地解释了您的问题,我同意他的建议,即在文件路径中不使用~
是最好的解决方案。但是,如果出于任何原因无法重命名这些路径,我相信您可以通过load
加载文档中的相对文件路径来解决substitute in file name
基本上,您需要将nil
添加到加载路径
变量中,然后将默认目录
变量设置为故障路径,最后使用相对名称加载文件。e、 g:
; adding nil causes load to also search your 'default-directory'
(setq load-path (append '(nil) load-path))
(setq default-directory "/tmp/~/")
(load "foobar.el")
请注意,如果怀疑文件名可能存在于加载路径的其他位置(从中加载),则需要确保所需文件位于加载路径的第一位
请参阅。该目录的字面名称是~
?如果是这样的话,那就不是一个好主意,因为~
往往会在各种上下文中扩展到主目录。Emacs开玩笑说,这是关于程序的使用,而不是制作程序。Paul R是正确的--将文件夹~
重命名为其他文件夹,因为Emacs通常将该字符识别为主目录的路径。只是出于好奇:为什么要命名目录~
?你怎么会想到那样做?我想知道是否某个地方的某个文档可能不清楚,并导致您这样做。出于好奇:)谢谢您的回复,也许重命名是最好的解决方案。我相信原因是作为一种快捷方式返回到~
或/
(根目录)。否则,唯一的方法就是从任意深度的目录退格到root,然后/home/username/
返回~
。