在Emacs中更改默认文件夹

120

我对Emacs比较新手,一直在尝试找到如何在启动时更改C-x C-f的默认文件夹。例如,当我首次加载Emacs并按下C-x C-f时,它的默认文件夹是C:\emacs\emacs-21.3\bin,但我更希望它是桌面。我相信有一些方法可以通过自定义.emacs文件来实现这一点,但我仍然不确定如何操作。

更新:我发现有三种解决方法可行,但我认为第三种解决方法仅适用于Windows系统。

  • 解决方法1:将(cd "C:/Users/Name/Desktop")添加到.emacs文件中

  • 解决方法2:将(setq default-directory "C:/Documents and Settings/USER_NAME/Desktop/")添加到.emacs文件中

  • 解决方法3:右键单击Emacs快捷方式,点击属性,将“起始位置”字段更改为所需目录。

12个回答

97

你没有明说,但听起来你是从Windows的快捷方式启动Emacs。

c-x c-f看到的目录是cwd,在Emacs术语中是default-directory(一个变量)。

当使用MS Windows快捷方式启动Emacs时,default-directory最初是快捷方式属性中“开始于”字段指定的文件夹(目录)。右键单击快捷方式,选择属性,并在开始于字段中输入您的桌面路径。

如果您正在使用命令行中的Emacs,则default-directory从启动Emacs的目录(cwd)开始。

这种方法比编辑您的.emacs文件更好,因为它可以让您拥有多个快捷方式和多个起始目录,并且如果需要的话,它也可以让您拥有Emacs的正常命令行行为。

CWD = 当前工作目录 = PWD = 当前工作目录。它在命令行中比GUI更有意义。


是的,我正在Windows上使用Emacs。 - Anton
9
这也适用于MacOS。我在我的.emacs文件中添加了这行代码:(setq default-directory (concat (getenv "HOME") "/")) - vy32
1
如果您想让Emacs在该目录的Dired中启动,除了将其放入“启动位置”字段中,还需在“目标”字段末尾添加一个或多个空格,并用双引号(")括起来。例如:"d:\path\to\the\folder" - Drew

51

我认为你需要添加到你的 .emacs 文件中的代码行是:

(setq default-directory "C:/Documents and Settings/USER NAME/Desktop/" )

如果您没有打开文件,Emacs会以此方式在您的桌面上启动。否则,它通常会在与当前缓冲区中的文件相同的目录中启动。


26

您可以通过输入 'cd' 命令( M-x cd )在emacs中更改默认文件夹,这只是一次性的更改。


25
我已经放置。
(cd "c:/cvsroot/")

我在我的.emacs文件中添加了此代码并成功解决了该问题。


7
默认文件夹实际上与缓冲区的当前工作文件夹相同,也就是说,您处理的每个文件的默认文件夹可能不同。例如,您正在处理的文件位于 C:\dir_a,那么该缓冲区的工作目录默认将为 C:\dir_a。您可以使用M-x cd更改此设置,并键入您想要作为默认值的任何目录(默认情况下,即在执行C-x C-f时显示的目录)。
如果您没有打开任何文件就启动emacs,则会打开*scratch*缓冲区。如果您从Windows快捷方式启动emacs,则工作目录将与快捷方式属性中指定的目录相同。如果您从命令行启动它,则它将从您启动它的目录开始。您仍然可以使用M-x cd*scratch*缓冲区更改此默认目录。
最后,您可以像Vadim建议的那样进行操作。
(cd "c:/dir_a/")

在您的.emacs文件中,无论您如何启动emacs,都可以将该目录设置为默认目录。

5

如果您使用的是Windows系统,您可以通过快捷键来完成这个操作。

创建一个指向C:\emacs\emacs-21.3\bin\runemacs.exe的快捷方式。编辑该快捷方式的属性,将 起始位置:的值更改为您所需的默认目录。


4
我正在使用 Windows XP 下的 emacs 22.2.1,并得到上面的答案来帮助我在命令 C-x C-f 中获得 minibuffer 中想要的响应。最初,我像 Anton 一样得到了"Find file: C:\Program Files\emacs\bin/"。 我的 HOME 路径设置为 "C:\Documents and settings\USER NAME\My Documents"。 我想要在 minibuffer 中对 C-x C-f 命令作出的响应是 "Find file: ~/"。 通过在我的 .emacs 文件中添加 (setq default-directory "C:/Documents and Settings/USER NAME/My Documents"),我能够得到 "Find file: C:\Documents and settings\USER NAME\My Documents/" 的响应,这与 "Find file: ~/" 功能上是相同的。 然而,我注意到了一个进一步的点。在 "选项" 下的 "自定义 Emacs" 允许我禁止启动屏幕。现在当我打开 emacs 时,我立即进入了 scratch 缓冲区。当我在 scratch 缓冲区中键入 C-x C-f 时,我得到了我想要的精确响应。

+1 提到抑制启动屏幕。我发现这对我的Windows 10系统非常关键。我在相关问题https://dev59.com/8mEi5IYBdhLWcg3wq9xD#38435697上发布了我的答案。 - Rob_before_edits

1
我已经在Gnome(Linux)的快捷方式中添加了一个参数,这是一个空的虚拟文件名,并指定了目录。由于我的emacs默认为“home”,所以我只需说:

/Desktop/blank_file

那样就会打开一个名为“blank_file”的文件。

这也会将该emacs会话的当前工作目录移动到桌面。

如果我偶然把东西放在“blank_file”中并保存它,当然,我已经保存了这些东西。这可能是一件烦人的事,也可能是一件好事,具体情况取决于你!


1

如果你想在Dired和shell中将默认目录更改为桌面,请将以下代码添加到你的~/.emacs文件中:

;;这段代码适用于Windows XP。
(setq default-directory (concat "C:\Documents and Settings\MY_ACCOUNT\DESKTOP\"))


1
对于Windows用户而言,我发现最好的方法是创建runemacs.exe的快捷方式并将其放置在笔记文件夹的根目录中。这样,当您使用此快捷方式打开emacs时,默认情况下会在根目录中打开,无需特别设置Start In属性(您可以将Start In属性留空)。

参考:根据Microsoft的说法,如果您将“Start In”框保留为空,则脚本将在当前工作目录中运行

提示:

此外,如果您已将笔记组织成多个根文件夹(个人、工作等),则可以在每个文件夹中复制多个这样的快捷方式,以打开具有自己默认目录的各个emacs实例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接