我尝试为 Emacs 的 Windows 安装寻找 .emacs 文件,但我找不到它。它在 Windows 下是否与 Unix 下具有相同的文件名?
我必须自己创建吗?如果是这样,它在哪个特定目录下?
从 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 有更多信息。
它应该存储在变量 user-init-file 中。使用 C-H v user-init-file RET
检查。您也可以使用 M-x eval-expression RET (find-file user-init-file) RET
直接打开它
trailing garbage following expression
?
在 Emacs for Windows 中像这样打开文件:
C-x C-f ~/.emacs
Emacs Wiki 中的更多信息
在我的 Vista 盒子上,它位于 C:\Users\<USER>\AppData\Roaming\
请注意,仅键入 Ctrl-x Ctrl-f ~/.emacs
并创建文件可能还不够。
可能是您的 Emacs 应用程序使用不同的位置来存储您的 init 文件,如果是这样,那么创建文件 ~/.emacs 只会创建一个您的 Emacs 应用程序忽略的无用文件。
此外,您可能想要做的不仅仅是访问 .emacs 初始化文件,而是您可能想知道它在哪里,即它的路径名。
要做到这一点,有两种方法:
简单的方法:输入 Ctrl + HV user-init-file Return
稍微棘手的方法:您可以通过以下方式找出系统存储自己的 .emacs 文件的位置:
单击选项并向下滚动到“设置默认字体...” 更改字体设置并单击确定 在选项菜单上,向下到“保存选项” 保存选项后,系统会保存其 .emacs 文件,您可以读取 Emacs 屏幕底部 minibuffer 中的文件路径
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 目录(至少就我而言)。
在 Windows 7 中,将您的 init.el
文件放在 C:\Users\user-name\AppData\Roaming\.emacs.d\
中,其中 user-name 是您的用户/登录文件夹。
请注意不要将您的 init.el
文件命名为 init.el.txt
。如果您使用记事本等编辑器创建文件,Windows 就会这样做。
在 Windows 22 以上的 Emacs 版本上,它似乎已移至
~/.emacs.d/init.el
~
是您的环境变量 HOME 的值(请参阅控制面板 → 系统 → 高级 → 环境变量)。
文件本身可能不存在。在这种情况下,只需创建它。
您必须创建一个 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 文件不加载
正如 kanja 回答的那样,该文件的路径存储在 user-init-file
变量中(或者如果不存在初始化文件,则该变量包含创建位置的默认值)。
因此,无论您使用哪个可能的 init 文件名,以及它位于哪个目录,您都应该能够通过以下方式访问您的 init 文件:
M-: (find-file user-init-file)
RET
或者在回声区域显示其完整路径:
M-: (expand-file-name user-init-file)
RET
在 Emacs 23 和 Windows 7 上,它仅在您设置时才有效:
HKCU\SOFTWARE\GNU\Emacs\HOME
我发现 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 实际映射到什么。
HOME
环境变量,这取决于我如何启动 runemacs.exe
。如果我从资源管理器中启动它,HOME
设置为 C:\Documents and Settings\username
,但如果我从开始菜单启动它,HOME
是 C:\Documents and Settings\username\Application Data
。奇怪的。
在 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 的已接受答案)
在 Windows XP 上是:
C:\Documents and Settings\yourusernamehere\Application Data\
在 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
有一个基于您的 Windows 版本和额外信息的目录列表:http://www.gnu.org/software/emacs/manual/html_node/emacs/Windows-HOME.html
对于 WIndows7& Emacs26.3:
如果设置了 HOME
环境,则 .emacs
文件应位于该文件夹中。
否则,它应该在 c:\
中。
在这两种情况下,如果 .emacs
不存在,则应使用 _emacs
。
这是因为我们无法根据 windows 文件命名规则创建 .emacs
文件。(但我们可以从其他地方下载或复制它)。
不定期副业成功案例分享