doom emacs 依赖的各个工具可以通过 Chocolatey 或者 Scoop 软件包管理器统一安装, 但本文选择使用自行下载可执行文件的方式, 方便知根知底.
本文默认你已经安装了 git 和 emacs. 还没安装的同学可以在网上找一下教程安装. emacs 选择类似于 emacs-29.2-installer.exe
的安装包安装即可. 注意将各自的 bin 目录添加到环境变量中, 目的是找到相应的可执行文件.
总体步骤
- 创建 HOME 系统变量. 任务栏的搜索框处搜索"环境变量"并打开, 新建一个
HOME
系统变量, 位置填一个合适的就行. - 安装rg(ripgrep), 点开右侧的
release
, 点开all 30 assets
, 找到类似于ripgrep-14.1.0-x86_64-pc-windows-gnu.zip
的压缩包, 将其下载至本地合适目录后解压缩, 并将 rg.exe 执行文件所在目录添加至环境变量. - 安装fd(此为可选), 和上述相同操作(包名类似于
fd-v9.0.0-x86_64-pc-windows-gnu.zip
)后将其 exe 执行文件所在目录添加至环境变量. - 打开 git bash, 执行下列命令将 doom emacs 克隆到上述 HOME 目录中:
git clone --depth=1 https://github.com/doomemacs/doomemacs ~/.emacs.d
- 切换到 doom emacs 的 bin 目录:
cd <你的HOME目录>/.emacs.d/bin/
. 注意此处要是用的是 git-bash.exe, 则可以用~
替代 home 目录的路径, 否则最好使用绝对路径. - 安装 doom emacs 的配置目录, 作用是生成
.doom.d
文件夹:doom install
. - 安装相关的包:
doom sync
.
然后就可以打开 emacs 进行使用了.
配置讲解
doom emacs 的主要配置集中在 .doom.d
文件夹下, 之后只需要备份这个文件夹就行了, 其下的目录作用大致如下:
init.el
: doom emacs 将很多软件预装好了, 分成了很多层, 作为一个一个的模块.只需要在其中将需要的包注释取消即可打开相应的模块, 保存文件之后按照上面的在上述.emacs.d
的bin 目录中执行doom sync
把包下下来就可以用了. 之后需要什么包优先去init.el
这里看, 没有再自己添加.config.el
: 用户自定义的设置, 如ui之类的会放在这里.package.el
: 用户需要额外安装的包就在这里进行配置.custom.el
: 通过 emacs 中自带的 custom 设置修改配置时, 相关的配置就会放在这里.
出现错误
问题1
在windows 下安装 doom emacs 时, 出现错误 Installing straight... x There was an unexpected runtime error...
原因
straight.el 的版本不够新
解决
在git-bash中执行下列两条命令
cd ~/.emacs.d/.local/straight/repos/straight.el
git pull origin develop
将straight.el进行更新即可.
问题2
> Cloning org-yt...
x There was an unexpected runtime error
Message: Wrong type argument
Details: (arrayp nil)
原因
仔细查看错误日志, 有这样一条错误信息:
$ git fetch origin
fatal: unable to access 'https://github.com/melpa/melpa.git/': Failed to connect to github.com port 443 after 21124 ms: Couldn't connect to server
[Return code: 128]
这个说明是网络问题, 看样子和git的认证有关.
解决
在git-bash 命令行输入如下命令
git config --global http.sslVerify false
然后就可以执行 doom install
以及 doom sync
等命令了.
注意
- 如果需要为git设置代理, 需要使用
git config --global http.proxy localhost:7890
和git config --global https.proxy localhost:7890
命令为git设置http 和 https 的代理, 主机名和端口名需要根据自己的更改. - 由于此篇是通过回忆大致梳理了一遍, 可能有一些疏漏. 如果出现什么问题, 欢迎评论区留言.