我在 Windows XP 上使用 Emacs,每当我输入“~/”时,它都会自动用目录替换,在我的情况下是“C:/Documents and Settings//Application Data”。有什么方法可以让它指向另一个目录,比如桌面上的项目目录?每次我需要在那里创建一个新文件时,我都必须 Cx Cf + 完整路径,虽然制表符补全比通常更快,但最好将该目录绑定到“~/”之类的目录以方便访问。有什么办法可以做到这一点吗?
答案1
您需要做的就是设置%HOME%
环境变量。
您可以通过以下方式完成此操作:
开始->设置->控制面板->系统
点击高级选项卡。底部有一个按钮:“环境变量“。
创建一个名为的新变量HOME
并将您想要的路径放入其中。
由于大多数 Windows 程序不关心这个变量,所以它不太可能对您造成任何其他影响。
这也可以通过编辑 emacs 的注册表项来完成。以下是有关注册表变量的一些信息:Windows 注册表。
答案2
似乎~
由 处理expand-file-name
,并且没有提到任何改变其扩展方式的方法。但它确实使用了HOME
环境变量。您可以为 指定一个新值HOME
,但这可能会混淆用作HOME
存储文件位置的其他内容(customize
等,它们可能想要读取或写入 下的文件HOME
)。
作为一项实验,我写了一些建议,find-file
暂时改变 的值HOME
。这样做的目的是尽量减少替代值处于活动状态的时间。
(defvar fake-HOME-value "/var/tmp"
"An alternate value to use for the HOME environment variable
while the 'fake-HOME' around advice is active.")
(defadvice find-file (around fake-HOME)
"Temporarily replace the HOME environment variable with
the value from 'fake-HOME-value'."
(let ((original-HOME-value (getenv "HOME")))
(unwind-protect
(progn
(setenv "HOME" fake-HOME-value)
ad-do-it)
(setenv "HOME" original-HOME-value))))
(defun disable-fake-HOME ()
"Disable the fake-HOME advice for find-file."
(interactive)
(progn
(ad-disable-advice 'find-file 'around 'fake-HOME)
(ad-update 'find-file)))
(defun enable-fake-HOME ()
"Enable the fake-HOME advice for find-file."
(interactive)
(progn
(ad-enable-advice 'find-file 'around 'fake-HOME)
(if (ad-is-active 'find-file)
(ad-update 'find-file)
(ad-activate 'find-file))))
(enable-fake-HOME)
;(disable-fake-HOME)
将其放入您的.emacs
(或.el
文件,和(load-file "/path/to/your.el")
)。我无法在 Windows 上测试它,但唯一特定于平台的是 的使用HOME
,但我认为 Emacs 将 Windows 等效项 (几个环境变量的组合?) 转换为HOME
。
答案3
~
是“用户主目录”的一个非常古老且完善的同义词,并且该逻辑可能深藏在 emacs 内部,除非您愿意在找到适当的代码并对其进行更改后从源代码重建它,否则不太可能改变。另一方面,您可能可以将启动 emacs 的快捷方式设置为在您选择的目录中启动,这样您就可以保存和加载文件而无需指定路径。可能吧。