ChatGPT解决这个技术问题 Extra ChatGPT

在哪里可以找到在 Windows 上运行的 Emacs 的 .emacs 文件?

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

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


P
Peter Mortensen

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

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

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

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

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

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

HOME and Startup Directories on MS-Windows 有更多信息。


或者您可能需要使用 Cx Cf ~/_emacs (而不是句点)查找。在你的 init 中使用下划线是 Vim 和 Emacs 的常见(和建议)做法。
Emacs 抱怨“_emacs”已被弃用:(
谢谢。这个解释实际上帮助我按照 clojure 教程正确设置了 emacs,他们甚至没有提到这一点。在 Windows 上创建了 HOME 变量,现在它可以工作了。
对我来说,参考上面的第 5 点,emacs 正在寻找我的目录是 Windows 7 上的 C:\Users\userid\AppData\Roaming 但我的计算机当然在域中。
在 Windows 10 上,我将变量 HOME 设置为 %USERPROFILE% 以避免 AppData 后缀。
c
cruizh

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


这很有帮助,我很惊讶在 init 文件的手册部分中没有提到它。
我想知道为什么当我尝试这个时,我得到 trailing garbage following expression
你用括号了吗?
s
sverrejoh

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

C-x C-f ~/.emacs

Emacs Wiki 中的更多信息


然后单击 File > Open File... 或 Save As... 以查看 ~/ 在熟悉的 Windows Open 对话框中的位置。
A
Alexander Kojevnikov

在我的 Vista 盒子上,它位于 C:\Users\<USER>\AppData\Roaming\


Windows 8.1 (Emacs 24) 相同,但有一个例外。当从 Windows 资源管理器、链接或 cmd 控制台打开 Emacs 时,它使用 C:\Users\\AppData\Roaming\.emacs 配置文件,但如果您从 PowerShell 控制台打开 Emacs,Emacs 将在 C 中查找 .emacs 文件:\Users\ 文件夹。
这对我有用。我在 AppData 的 Roaming 目录中创建了一个 .emacs 文件,效果非常棒!视窗 10。
在 Windows 10 中工作
P
Peter Mortensen

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

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

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

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

简单的方法:输入 Ctrl + HV user-init-file Return

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

单击选项并向下滚动到“设置默认字体...” 更改字体设置并单击确定 在选项菜单上,向下到“保存选项” 保存选项后,系统会保存其 .emacs 文件,您可以读取 Emacs 屏幕底部 minibuffer 中的文件路径


请参阅有关格式化您的答案的文档。它很容易,将为您赢得更多声誉。
当我保存一个名为 ~/.emacs.el 的文件时,它是在 c:/Users/user1/AppData/Roaming/.emacs.el 中创建的。这个站点 emacswiki.org/emacs/DotEmacsDotD 帮助我意识到我需要将文件命名为 ~/.emacs.d/init.el,这意味着文件系统中的文件位于 c:\Users\user1\AppData\Roaming\.emacs.d\init.el(完全不是我所期望的)。我更喜欢设置 HOME 环境变量并将文件放在我的 %USERPROFILE% 目录中,该目录是 Windows 上的逻辑 HOME 目录(至少就我而言)。
J
Jin Kwon

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

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


P
Peter Mortensen

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

~/.emacs.d/init.el

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

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


P
PatS

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

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

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

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

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

当我看到 user-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 正在执行它的默认行为

解决方案

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

为了设置 HOME 环境变量,我输入了 WindowsKey+"edit environment variables for your account" 打开 Environment Variables 对话框,然后输入 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 目录中。

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

Emacs init.el 文件不加载


“必须喜欢 Windows 的工作方式。(不是)”——这个问题与 Windows 没有任何关系,除了 Emacs 开发人员对在 Windows 上运行 Emacs 的人所做的事情。
p
phils

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

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

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

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

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


P
Peter Mortensen

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

HKCU\SOFTWARE\GNU\Emacs\HOME

“设置”是指创建该密钥(没有内容)吗?
r
remcycles

我发现 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 实际映射到什么。


我现在注意到 Windows 将设置不同的 HOME 环境变量,这取决于我如何启动 runemacs.exe。如果我从资源管理器中启动它,HOME 设置为 C:\Documents and Settings\username,但如果我从开始菜单启动它,HOMEC:\Documents and Settings\username\Application Data。奇怪的。
C
Community

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


P
Peter Mortensen

在 Windows XP 上是:

C:\Documents and Settings\yourusernamehere\Application Data\

k
ksinkar

Emacs 27.1 之后,emacs 具有 started respecting $XDG_CONFIG_HOME。现在可以在 $XDG_CONFIG_HOME/emacs/init.el 中找到 init 文件或 init 目录。

在 Windows 中 $XDG_CONFIG_HOME 可以从 translate%LOCALAPPDATA%

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

user-init-file

或 emacs 配置目录

user-emacs-directory

f
fatihpense

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


Z
ZhaoGang

对于 WIndows7& Emacs26.3:

如果设置了 HOME 环境,则 .emacs 文件应位于该文件夹中。

否则,它应该在 c:\ 中。

在这两种情况下,如果 .emacs 不存在,则应使用 _emacs

这是因为我们无法根据 windows 文件命名规则创建 .emacs 文件。(但我们可以从其他地方下载或复制它)。