123

我尝试为 Emacs 的 Windows 安装寻找 .emacs 文件,但我找不到它。它在 Windows 下是否与 Unix 下具有相同的文件名?

我必须自己创建吗?如果是这样,它在哪个特定目录下?

4

16 回答 16

117

从 Emacs 常见问题解答中复制并粘贴,http ://www.gnu.org/software/emacs/windows/ :

我在哪里把我的初始化文件?

在 Windows 上,为了向后兼容文件名不能以点开头的 DOS 和 FAT 文件系统,.emacs可能会调用该文件。_emacs一些用户更喜欢继续使用这样的名称,因为 Windows 资源管理器无法创建名称以点开头的文件,即使文件系统和大多数其他程序可以处理它。在 Emacs 22 及更高版本中,也可以调用 init 文件.emacs.d/init.el。许多由 Lisp 包创建的其他文件现在也存储在该.emacs.d目录中,因此这将所有与 Emacs 相关的文件保存在一个地方。

上面提到的所有文件都应该放在你的 HOME 目录中。HOME 目录通过以下步骤确定:

  1. 如果设置了环境变量 HOME,则使用它指示的目录。
  2. 如果设置了注册表项 HKCU\SOFTWARE\GNU\Emacs\HOME,请使用它指示的目录。
  3. 如果设置了注册表项 HKLM\SOFTWARE\GNU\Emacs\HOME,请使用它指示的目录。不推荐,因为它会导致用户共享同一个 HOME 目录。
  4. 如果C:\.emacs存在,则使用C:/. 这是为了向后兼容,因为以前的版本默认为C:/如果未设置 HOME。
  5. 使用用户的 AppData 目录,通常是用户配置文件目录下名为 Application Data 的目录,该目录的位置根据 Windows 版本和计算机是否属于域而有所不同。

在 Emacs 中,~文件名的开头扩展为您的 HOME 目录,因此您始终可以找到带有 .emacs 的 .emacs 文件C-x C-f ~/.emacs

在HOME 和 MS-Windows 上的启动目录中有更多信息。

于 2008-10-09T22:53:45.510 回答
92

它应该存储在变量 user-init-file 中。用来C-H v user-init-file RET检查。您也可以使用直接打开它M-x eval-expression RET (find-file user-init-file) RET

于 2008-10-10T16:16:33.410 回答
30

在 Emacs for Windows 中像这样打开文件:

C-x C-f ~/.emacs

Emacs Wiki中的更多信息

于 2008-10-09T23:38:38.337 回答
22

在我的 Vista 盒子里C:\Users\<USER>\AppData\Roaming\

于 2008-10-09T22:57:37.327 回答
6

Ctrl-x Ctrl-f ~/.emacs请注意,仅键入和创建文件可能还不够。

可能是您的 Emacs 应用程序使用不同的位置来存储您的 init 文件,如果是这样,那么创建文件 ~/.emacs 只会创建一个您的 Emacs 应用程序忽略的无用文件。

此外,您可能想要做的不仅仅是访问.emacs 初始化文件,而是您可能想知道它在哪里,即它的路径名。

要做到这一点,有两种方法:

简单的方法:类型Ctrl+H V用户初始化文件Return

稍微棘手的方法:您可以通过以下方式找出系统存储自己的 .emacs 文件的位置:

  1. 单击选项并向下滚动到“设置默认字体...”
  2. 更改字体设置并单击确定
  3. 在选项菜单上,转到“保存选项”
  4. 保存选项后,系统会保存其 .emacs 文件,您可以在 Emacs 屏幕底部的 minibuffer 中读取文件路径
于 2013-11-22T04:09:05.670 回答
4

在 Windows 22 以上的 Emacs 版本上,它似乎已移至

~/.emacs.d/init.el

~是您的环境变量 HOME 的值(请参阅控制面板 →系统高级环境变量)。

文件本身可能不存在。在这种情况下,只需创建它。

于 2010-01-02T11:28:06.967 回答
4

在 Windows 7 中,将您的init.el文件放入 中 C:\Users\user-name\AppData\Roaming\.emacs.d\,其中user-name是您的用户/登录文件夹。

init.el注意不要将您的文件命名为init.el.txt. 如果您使用记事本等编辑器创建文件,Windows 就会这样做。

于 2014-07-17T06:40:56.970 回答
3

您必须创建一个 emacs 初始化文件。一个不是自动创建的。我有一个类似的问题,这个答案追踪了我所做的事情。

我的问题是我的~/.emacs.el文件没有加载。奇怪,因为这一直对我有用。

这个问题/答案对我有帮助,但我不得不将我的 init 文件放入其中,%USERPROFILE%\AppData\Roaming\.emacs.d\init.el因为这显然是 Windows 上的默认行为。

为了解决这个问题,我在 emacs *scratch*缓冲区中运行了以下命令。

user-emacs-directory
"~/.emacs.d/"

当我看到isuser-emacs-directory~/.emacs.d,我只是将我的 .emacs.el 文件移动到%USERPROFILE%\.emacs.d\init.el. 但这仍然不起作用。我继续expand-file-name如下所示:

(expand-file-name user-emacs-directory)
"c:/Users/pats/AppData/Roaming/.emacs.d/"

必须爱上 Windows 的工作方式。(不)所以我把我的emacs.el文件移到了%USERPROFILE%\AppData\Roaming\.emacs.d\init.el,这有效。现在正在读取该文件。但我得到了其他错误,因为我的初始化文件加载了其他(个人 emacs)文件(在~/myenv/emacs/*.el.

Warning (initialization): An error occurred while loading ‘c:/Users/pats/AppData/Roaming/.emacs.d/init.el’:

嗯...似乎我所有的文件~/myenv/emacs/*.el都需要移动才能使其正常工作,但我不想这样做。然后我意识到,因为没有设置 HOME 环境变量,emacs 正在执行它的默认行为

解决方案

一旦我将我的 windowsHOME环境变量设置为%USERPROFILE%一切都开始像过去 25 年一样工作。:-)

要设置 HOME 环境变量,我键入 WindowsKey+“为您的帐户编辑环境变量”打开环境变量对话框,然后输入HOME=%USERPROFILE%.

现在我的 emacs 初始化文件 .emacs.el 回到了它应有的位置$HOME/.emacs.el,而不是在%USERPROFILE%\AppData\Roaming\.emacs.d\init.el

公平地说,如果 Windows 只有一个地方来放置用户安装的软件包的文件,那么制作 HOME= 的解决方案%USERPROFILE\AppData\Roaming可能是可以接受的,但是因为一些应用程序使用%USERPROFILE%,一些使用%USERPROFILE\AppData\Roaming和其他使用%USERPROFILE\AppData\Local它只会让您很难知道在哪里可以找到您的配置文件。

我更喜欢将所有内容都放在我的 %USERPROFILE% 或 $HOME 目录中。

另一个类似的问题在这里:

于 2018-11-02T21:44:23.490 回答
2

在 Emacs 23 和 Windows 7 上,它仅在您设置时才有效:

HKCU\SOFTWARE\GNU\Emacs\HOME
于 2010-08-07T17:00:18.617 回答
2

正如 kanja 回答的那样,该文件的路径存储在user-init-file变量中(或者如果不存在 init 文件,则该变量包含创建位置的默认值)。

因此,无论您使用哪个可能的 init 文件名,以及它位于哪个目录,您都应该能够通过以下方式访问您的 init 文件:

M-: (find-file user-init-file) RET

或者在回声区域显示其完整路径:

M-: (expand-file-name user-init-file) RET

于 2012-06-16T03:28:47.747 回答
1

在 Windows XP 上是:

C:\Documents and Settings\yourusernamehere\Application Data\
于 2008-10-09T23:04:56.080 回答
1

我发现 Emacs 22 偶尔会在我的 XP 机器上打开“C:\Documents and Settings\username\Application Data\.emacs”,或者只打开“C:\Documents and Settings\username\.emacs”。我还没有找到解释为什么它偶尔会改变主意。

~ 将始终指向当前 emacs 实例认为是 HOME 的任何内容,但 kanja 的提示(Ch v user-init-file)将始终告诉您 ~/.emacs 实际映射到什么。

于 2009-10-27T00:31:55.420 回答
1

在 Windows 8.1 上,如果 Emacs 从Windows Explorer、快捷方式或从cmd控制台启动,它使用C:\Users\<USER>\AppData\Roaming.emacs初始化文件。当我从 PowerShell 启动 Emacs 时,Emacs 在C:\Users\<USER>文件夹中查找它的 init 文件。解决此问题的方法是将HOME用户环境变量(控制面板\系统和安全\系统->高级系统设置->高级->环境变量)设置为C:\Users\<USER>。在此更改之后,无论我如何启动 Emacs,它都使用相同的 init 文件(请参阅此问题的已接受答案)

于 2015-07-03T15:00:04.357 回答
1

Emacs 27.1之后,emacs开始尊重. $XDG_CONFIG_HOMEinit 文件或 init 目录现在可以在$XDG_CONFIG_HOME/emacs/init.el.

在 Windows$XDG_CONFIG_HOME中可以转换%LOCALAPPDATA%.

在任何情况下,您都可以使用以下 emacs 变量来找出初始化文件的位置M-x eval-expression

user-init-file

或 emacs 配置目录

user-emacs-directory
于 2020-09-20T12:26:41.463 回答
0

有一个基于您的 Windows 版本和额外信息的目录列表: http ://www.gnu.org/software/emacs/manual/html_node/emacs/Windows-HOME.html

于 2013-07-30T16:21:30.520 回答
0
于 2020-03-27T06:55:14.363 回答