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


115

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

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

Answers:


108

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

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

在Windows上,.emacs可以调用该文件_emacs以实现与DOS和FAT文件系统的向后兼容性,而DOS和FAT文件系统的文件名不能以点开头。一些用户更喜欢继续使用这样的名称,因为Windows资源管理器无法创建以点开头的名称的文件,即使文件系统和大多数其他程序可以处理它也是如此。在Emacs 22和更高版本中,初始化文件也可以称为.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文件C-x C-f ~/.emacs

在MS-Windows的HOME和Startup Directories中有更多信息。


1
或者,您可能需要使用Cx Cf〜/ _emacs(而不是句点)来查找。在Vim和Emacs上都使用下划线进行初始化是常见的做法(并建议这样做)。
迷宫2012年

Emacs抱怨“ _emacs”已被弃用:(
Brian Z

谢谢。这个解释实际上帮助我按照clojure教程正确地设置了emacs,他们甚至没有提到这一点。在Windows上创建HOME变量,现在可以使用了。
Siniyas 2015年

对于我来说,关于上述第5点,在Windows 7上,emacs查找到的目录是C:\ Users \ userid \ AppData \ Roaming,但是我的计算机当然在域中。
user8128167 '16

在Windows 10上,我将变量HOME设置为%USERPROFILE%,以避免AppData后缀。

80

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


8
这非常有用,我很惊讶在init文件的手册部分中没有提到它。
Brian Z

我不知道为什么当我尝试这样做时,我得到了trailing garbage following expression
Marko Grdinic '16

您是否使用了括号?
Jose Romero

29

在Windows版Emacs中打开这样的文件:

C-x C-f ~/.emacs

Emacs Wiki中的更多信息


11
然后单击文件>打开文件...或另存为...,以查看〜/在熟悉的Windows打开对话框中的位置。
Yoo

21

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


1
Windows 8.1(Emacs 24)相同,但有例外。从Windows资源管理器,链接或cmd控制台打开Emacs时,它使用C:\ Users \ <USER> \ AppData \ Roaming \ .emacs配置文件,但如果从PowerShell控制台打开Emacs,则Emacs将在C中查找.emacs文件:\ Users \ <USER>文件夹。
kri

这对我有用。我在AppData的Roaming目录中创建了一个.emacs文件,其工作原理很像。Windows 10
Retro Gamer

在Windows 10中工作
Alex Kaszynski,

6

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

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

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

为此,有两种方法:

简单方法:输入Ctrl+ H V用户初始化文件Return

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

  1. 单击选项,然后向下滚动到“设置默认字体...”
  2. 更改字体设置,然后单击确定
  3. 在选项菜单上,转到“保存选项”
  4. 保存选项后,系统将保存其.emacs文件,您可以在Emacs屏幕底部的迷你缓冲区中读取文件路径

请参阅有关格式化答案的文档。它很容易,将为您赢得更多声誉。
Bhavik Shah 2013年

当我保存一个名为〜/ .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目录(至少就我而言)。
PatS

4

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

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


4

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

~/.emacs.d/init.el

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

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


3

您必须创建一个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 +“为您的帐户编辑环境变量”以打开“ 环境变量”对话框,然后输入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目录中。

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


“热爱Windows的工作原理。(不是)” —除了Emacs开发人员对在Windows上运行Emacs的人员所做的工作之外,此问题与Windows没有任何关系。
克里斯·查拉巴鲁克

2

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

因此,无论您使用哪个可能的初始化文件名​​以及它位于哪个目录中,您都应该能够使用以下命令访问您的初始化文件:

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

或使用以下命令在回显区域中显示其完整路径:

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


2

在Emacs 23和Windows 7上,仅当您进行以下设置时,它才有效:

HKCU\SOFTWARE\GNU\Emacs\HOME

终于我找到了!谢谢!
克里斯,

终于我找到了!我也是!
13年

“设置”是指创建该密钥(不包含任何内容)吗?
Peter Mortensen

1

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

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


2
现在,我注意到Windows将HOME根据我的启动方式来不同地设置环境变量runemacs.exe。如果我从资源管理器中启动它,HOME则设置为C:\Documents and Settings\username,但是如果我从开始菜单中启动它,则设置HOMEC:\Documents and Settings\username\Application Data。奇怪。
回收

1

在Windows XP上是:

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


0

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


0

对于Windows 7和Emacs26.3:


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

否则,它应该在中c:\


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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.