[分享] 关于 Windows 上 Emacs 启动的默认目录

在 Windows 上使用 Emacs 有几年了,一直没搞懂 Emacs 的默认启动目录。 每次启动后在 *scrach* buffer 上按 C-x d 开启 dired 时,默认目录总是 "c:/Windows/System32/"

以前试过Emacs 启动后执行 (cd "~/"), 但会影响用 Borg 时在终端中 make build, 后来就不用了。

今天经 TG 的道友 @iab 提醒,原来是因为 Emacs 启动快捷键中没有设置起始目录造成的。

解决方法:

只要在上图的 “起始位置” 设置为自己的 HOME 目录就好了,这样体验就和在 Linux 和 macOS上一致了。 如果不知道 HOME 目录是哪,可以在 CMD 中执行 echo %HOME% 查看。我是将 HOME 设置到了 C:\Users\<Your User Name>

6 个赞

感谢大佬分享。 很想在win用,但是自己不会写配置,直接doom或spacemacs都表现不正常,要么用着用着 too many open files,只能wsl2下使用了,总是有点不便。

哦哦哦,谢谢大佬科普!终于知道快捷方式中这个 起始位置 是什么意思了。相当于 pwd 的输出是吧?Windows真逆天,工作目录就写工作目录不就好了嘛,又搞特殊😅

Windows 上我安装过 Doom,但没怎么用过。安装的话,只要设置好代理,安装都是很方便的。Doom 应该有相应的安装指导。

too many open files 的问题估计是你使用了 lsp-mode。好像 Emacs 上游已经修复这个问题了,你可以用最新的 Emacs 29 或者 Emacs 30 试试。

这里有下载:Index of /gnu/emacs/pretest/windows/emacs-29

我补充另一个在 Windows 上用 Emacs 比较不爽的地方:

把运行中的 Emacs 固定到任务栏上后,每次点击打开 Emacs 都会跳出一个终端窗口,看着就很不爽;解决办法是按住 shift 键的同时鼠标右键任务栏上的 Emacs 图标,把启动改成 runemacs.exe 就不会弹出终端窗口了

当然这可能是我 Windows 用的太少的原因。。。不过这个地方当时的确让我不爽了好一阵 :joy:

如果设置了 HOME 环境变量,比如我这个:

就可以这样设置起始目录:

你这是类似的问题,因为固定后,启动的属性变了。点右键,属性,改回用 runemacs.exe 启动就好了。另外,起始目录它也帮你改了,建议也改回去。

image

比如我的,自动给我改成了下面这个:

你这是没读Emacs的readme啊, 上面说了emacs在windows上应该用runemacs.exe启动

1 个赞

嗯,是的;最开始用的时候固定在任务栏打开老是弹个终端窗口,可烦死我了,都是直接从终端敲 Emacs 启动

后来经人指点才知道任务栏上的图标可以通过按住 shift + 鼠标右键的方式修改属性 :smiling_face_with_tear:

1 个赞

可能是我太菜了,我不知道怎么在任务栏上添加可执行程序,只能通过 runemacs.exe 启动后,对着任务栏上的已有图标选择固定到任务栏,一固定后,它的启动方式就变成 emacs.exe 了

直到后来有高人指点我修改启动方式才明白是啥原因

这个技巧可以的,我一直不知道,都是用maye来启动emacs
win11上必须按shift 右键才行

我也不知道任务栏可以用shift+点击来修改属性,感谢分享。

在任务栏图标上右键后对出来的再右键就可以了 image

1 个赞

加到我的Emacs教程FAQ里去了:

还有 cmd,每次输入cmd进命令行都显示 “c:/Windows/System32/”,以为这个是默认值,每次都要现改目录,原来可以这么改

我用 %APPDATA% 环境变量