Doom Emacs入门:通过Doom Emacs框架搭建一个基本的Python开发环境及其基本操作
一、写在前面
1.1 明确目标:搭建一个完整的Python开发环境
通常来说,熟练掌握Doom Emacs框架是有点难度的,需要很多专业知识和理论作为基础;另外,还要能够熟练掌握Emacs和Vim基本操作,再加上对Emacs常用的各种扩展的整体理解,等等。
但是,如果明确了某个特定的目标:比如,通过Doom Emacs这个框架,搭建一个完整的Python开发环境。然后,哪里不明白,网上搜索哪里,一步一步的尝试,还是可以实现的。
1.2 前置工作
1、你懂得,你可能也不懂
我们从github上克隆项目时,总是存在网络问题令我们非常头痛。你懂得,网络环境问题,不展开解释了。所以,解决上网问题是第一步,解决了这个问题看下面的内容才真正有意义。
2、Doom Emacs安装
github上的 hlissner/doom-emacs给出了安装过程,只需要看Prerequisties和Install两个部分即可。遇到问题,从终端上拷贝一下bug问题,搜索一下,基本上都能解决。
(1)Git查询网络配置信息的命令
| Git常用命令 | 描述 |
|---|---|
git config --list | 列出全部Git配置信息列表 |
git config --system --get https.proxy | 获取系统https的代理信息 |
git config --system --get http.proxy | 获取系统http的代理信息 |
git config --global --get https.proxy | 获取全局的https代理信息 |
git config --global --get http.proxy | 获取全局的http代理信息 |
另外,我们还可以通过cat $HOME/.gitconfig获取Git配置信息列表。
(2)Git设置网络配置信息的命令
| Git常用命令 | 描述 |
|---|---|
git config --system --unset https.proxy | 取消系统的https的代理设置 |
git config --system --unset http.proxy | 取消系统的http的代理设置 |
git config --global --unset https.proxy | 取消全局的https的代理设置 |
git config --global --unset http.proxy | 取消全局的http代理设置 |
第三部分列出我踩过的坑,并给出我的解决方法和解决方法网络链接。
3、踩过的坑
(1)git设置中需要将本地代理网址端口设置正确。
首先,查看自己的网络代理设置信息,在设置
→
\to
→网络
→
\to
→网络代理:

然后,点击网络代理后面的齿轮,在弹出的窗口中设置查看自己的HTTP和HTTPS代理的端口,这个端口号是可以自定义的,我设置的是8889。我的网络代理设置如下图所示:

(2)出现错误信息:fatal: 无法访问 ‘https://github.com/.git/‘:Could not resolve proxy: http***
在安装Doom Emacs过程中会出现:fatal: 无法访问 ‘https://gitee.com/***.git/‘:Could not resolve proxy: http的错误信息。
问题的原因:上一步,我们设置手动网络代理后,并没有更新Git中的网络代理信息,它与本地的网络代理的信息并不一致,因此才导致了Could not resolve proxy:http的错误信息。
解决方法:
取消系统和Git网络代理信息:
# Unset system value
git config --system --unset https.proxy
git config --system --unset http.proxy
# Unset global value
git config --global --unset https.proxy
git config --global --unset http.proxy
设置Git网络代理需要与第一步Ubuntu系统网络代理设置保持一致:
git config --global https.proxy 127.0.0.1:8889
git config --global http.proxy 127.0.0.1:8889
至此,Could not resolve proxy: http就解决了。
(3)Git Clone错误解决:GnuTLS recv error (-110): The TLS connection was non-properly terminated.
解决方法:
sudo su
apt install gnutls-bin
git config --global http.sslVerify false
git config --global http.postBuffer 1048576000
如果还是解决不了,在终端再输入如下命令:
sudo apt install apt-transport-https
(4)Doom Emacs安装过程中,all-the-icon安装不上
如果上面的问题都解决后,就能正常克隆Doom Emacs,并安装相应的插件了。但是在问你是否要安装all-the-icon时候,点y总是安装不上。到了这一步,Doom Emacs已经算是基本安装成功,就是Doom Emacs内的特殊图标显示乱码,其实并影响正常使用Doom Emacs了,但是看起来总是很别扭。
解决方法:打开~/.doom.d/config.el配置文件,添加如下代码:
(setq url-proxy-services
'(("http" . "host:port")
("https" . "host:port")))
其中host就本地网址127.0.0.1,端口号我这里是8889,根据你们自己的定义输入port,保存并退出。
重新安装Doom Emacs即可。
也可以打开Emacs,然后输入M-x all-the-icons-install-fonts。
二、Doom Emacs的Python基本开发环境搭建
2.1 Doom Emacs修改配置文件方法
打开~/.doom.d/init.el配置文件,我们可以发现,在(doom!)内部有很多模块可供我们自定义安装,带有;;注释的表示默认没有安装。如果有工作环境想要安装扩展插件,去掉注释,关闭Doom Emacs,然后在终端中输入如下命令:
~/.emacs.d/bin/doom sync
上面的指令会安装对应的插件,并更新Doom Emacs中的配置文件,此时再重启Emacs就可以
2.2 Python基本开发环境搭建
默认的Doom Emacs并没有安装Python的自动补全功能和语法高亮功能等模块,我们这里需要自己激活~/.doom.d/init.el配置文件中与Python开发环境搭建相关模块。
-
步骤一:找到
lsp,将前面的;;去掉。 -
步骤二:打开
~/.doom.d/init.el配置文件,找到;;python,将注释去掉,并修改为如下形式:
(python ;python语言支持
+lsp ;语言服务协议(LSP, Language Server Protocol),LSP设计目标是为
;某种编程语言的智能化,实现某个编程语言服务器与开发工具进行标准化通信
;的一个协议。其提供了编程语言的自动补全、转到定义、查找所有引用等功能。
+pylsp ;针对Python的语言服务协议LSP,在Emacs中实现Python语言的自动补全、
;转到定义、查找所有引用等功能。
+conda ;Python语言开发虚拟环境,也可以使用pyenv,看个人习惯。
)
- 步骤三:关闭Doom Emacs,然后在终端中输入
~/.emacs.d/bin/doom sync,重新启动Emacs,一个即与Doom Emacs框架的Python开发环境基本搭建完成。
2.3 Doom Emacs中编写Python语言的基本操作
1、Python的自动补全功能
使用Doom Emacs打开一个我以前写好的Python文件Advance_Dict_Program_2.py,需要注意的是:状态栏右下角显示的Elisp语言模式。

我们需要首先将语言模式改为Python模式,在正常模式下按下M-x(M为ALT键),然后输入python-mode,这时状态栏右下角就变为了Python 3.8.10,这个时候就可以进行python编程了。

比如,我们在插入模式下输入np,Doom Emacs自动弹出np np,我们按下回车键,就自动输出import numpy as np了,非常方便。
2、Python代码的运行方法
重新打开Doom Emacs如下图所示:

按下C-x C-f,根据自己的目录,打开我已经写好的python文件Advance_Dict_Program_2.py如下图所示,确保右下角为Python解释器:

按下C-x 3在右边打开一个新的Buffer,再按下C-x o将光标移动右边的Buffer;然后按下M-x,输入eshell,弹出Emacs Shell终端。由于我的python文件就放在主目录~下面,所以这里可以直接使用python Advance_Dict_Program_2.py直接执行,且执行结果如下图所示:

3、切换到Conda Python虚拟环境的方法
(1)创建一个conda python虚拟环境
假设已经安装了Miniconda,在终端输入conda activate,进入conda命令行模式如下图所示,有了(base)就表示进入了conda的base环境了,并使用conda env list列出系统已经有的python虚拟环境。并使用下面的命令创建一个针对Doom Emacs的python虚拟环境Doom_Emacs_Py:
conda create -n Doom_Emacs_Py python=3.8.10

解决方法:由于我们使用了本地https和http的网络代理,且端口设置为了8889,而我们的.bashrc中并没有添加系统网络代理它们的代理设置,打开.bashrc配置文件,并输入如下图所示的两条系统全局变量:

(2)Doom Emacs打开conda python虚拟环境
用Doom Emacs打开python Advance_Dict_Program_2.py文件,点击M-x,输入conda-env-activate,选择创建的Doom_Emacs_Py虚拟环境,就打开了conda python虚拟环境了,如下图所示:











