emacs“;查找文件:";默认路径

emacs“;查找文件:";默认路径,emacs,settings,emacs23,Emacs,Settings,Emacs23,我正在windows上使用emacs。我想知道如何更改emacs中默认的“Find File:”路径,即当我们按“C-x C-f”时,我希望默认的文件路径指向我的文档目录,而不是指向“C:\emacs-***\bin/”您必须将环境变量HOME重新定义为新的默认目录。在访问文件的缓冲区中,访问新文件(C-x C-f)时看到的默认路径是包含当前缓冲区文件的目录 为了用更合理的方法覆盖值“c:\emacs-***\bin/”,请在.emacs文件中设置默认目录变量: (setq default-di

我正在windows上使用emacs。我想知道如何更改emacs中默认的“Find File:”路径,即当我们按“C-x C-f”时,我希望默认的文件路径指向我的文档目录,而不是指向“C:\emacs-***\bin/”

您必须将环境变量
HOME
重新定义为新的默认目录。

在访问文件的缓冲区中,访问新文件(C-x C-f)时看到的默认路径是包含当前缓冲区文件的目录

为了用更合理的方法覆盖值“c:\emacs-***\bin/”,请在.emacs文件中设置
默认目录
变量:

(setq default-directory "/path/to/documents/directory/")
请注意,路径值应以斜杠(或Windows上的反斜杠)结尾

但是,您可能还需要考虑更改环境变量的值,如默认情况下,这是变量<代码>默认目录在启动时的点(除非设置为上面所示的其他值)。

< P>这是:

(global-set-key (kbd "C-x C-f")  (lambda () (interactive)
                                     (cd "somePathHere")
                                     (call-interactively 'find-file)))

(将somePathHere替换为文档目录的路径)

变量“默认目录”是“当前”目录(用于当前缓冲区)。命令“cd”更改目录,访问任何文件或目录(例如使用Dired)更改该缓冲区的“默认目录”

通过在命令行上传递该目录,可以在给定目录中启动Emacs。您也可以使用Windows快捷方式来执行此操作。你可以让快捷方式访问Dired中的目录

快捷方式信息示例:

目标:C:\Emacs\bin\runemacs.exe“C:\my\favorite\folder”


开始于:C:\my\favorite\folder

No.
HOME
用于除Emacs默认目录之外的许多其他用途。弄乱它可能会使许多事情表现得不可预测-1有效的评论。但由于Emacs现在似乎使用自己的目录,这意味着HOME变量尚未定义。在“我的文档”中定义它不会有什么坏处。如果他在LinuxWell上,我不会这么说,我承认我不知道Windows上的情况如何。在NTEMAC中,通常应该在文件路径中使用前斜杠。它知道该怎么做。@phils:我想之所以喜欢斜杠而不是反斜杠,是因为反斜杠也是字符串中的转义字符,因此您总是必须这样写路径名:“c:\\foo\\bar\\”,这变得很难看。这个答案对我(和其他人)不适用。请参阅@loudandclear answer@聚苯乙烯泡沫下面的讨论。答案是否有效取决于您的具体目标。如果您希望
C-xc-f
始终首先查看特定的默认目录,我同意将该快捷方式绑定到您自己的自定义函数可能是有意义的。但是,如果您对Emacs的标准行为感到满意,除非您在启动Emacs后第一次使用了
C-x C-f
(它使用了您不喜欢的目录),那么我的回答将对您有所帮助。@s有人这样做了-1,因为这是一个糟糕、不雅观的解决方案。Emacs有解决OPs问题的机制,默认目录。将键重新映射到一个新函数不是解决这个简单任务的方法。这是一个明智的答案。OP可能希望
C-xc-f
始终在某个目录中启动。设置
default directory
不会执行此操作,因为它是本地缓冲区,在您从其他目录读取或写入时会立即更改。您必须向
查找文件
目录
以及设置它的任何其他内容添加挂钩。改变每个缓冲区中的设置并不是改变一个键绑定行为的“优雅”方式!如果您希望keybinding做一些不同的事情,那么将其重新绑定到自定义包装器是简单、简单的,并且不会干扰其他任何事情。尽管如此,如果要将函数绑定到键,您至少应该给它一个名称。如果愿意,您可以使用
defun
inline(不过最好在顶层定义它,这样帮助系统就可以找到定义)。接受的答案在windows中对我不起作用。这个答案有效。