前言
最近电脑出了问题,懒得修了直接重装了Ubuntu,所以环境就要从头开始配。写这篇文章主要是为了以后再重装系统的时候,不用这么焦头烂额的重新配环境。下面我们开始,先贴出环境。
vim 8.2
python 3.8.8 (Anaconda)
Ubuntu 20.04.1
此处注意笔者的Python是Anaconda自带的,Anaconda和vim配合好像会出现bug,后文会提到,所以说不建议使用Anacoda来配置Vim。
安装vim
这里介绍如何安装vim8.2,因为vimspector要求的vim版本要不低于8.2,Ubuntu自带的vim版本为8.1,所以需要手动安装。
下载vim
$ git clone https://github.com/vim/vim.git
进行配置
$ cd vim
$ ./configure --enable-multibyte --enable-python3interp=yes --with-python3-config-dir=/home/lqz/anaconda3/lib/python3.8/config-3.8-x86_64-linux-gnu
$ make
$ sudo make install
我不小心将当时的./configure
配置删除了,所以配置命令是凭回忆写的,在这里贴出./configure
文件的配置参数意义
--with-features:支持最大特性
--enable-multibyte:打开中文输入的支持
--enable-rubyinterp:打开对ruby编写的插件的支持
--enable-pythoninterp:打开对python编写的插件的支持
--with-python-config-dir: 指定python路径
--enable-python3interp:打开对python3编写的插件的支持
--with-python-config-dir: 指定python3路径
--enable-perlinterp:打开对perl编写的插件的支持
--enable-luainterp:打开对lua编写的插件的支持
--enable-gui=gtk2:gtk2支持,也可以使用gnome,表示生成gvim
--enable-cscope:打开对cscope的支持
--prefix:指定将要安装到的路径(自行创建)
此处配置及说明参考CentOS编译安装vim8并支持python3。
问题解决
不出意外的话,使用Anaconda的朋友应该会遇到一个fatal error
:
lto1: fatal error: bytecode stream generated with LTO version 6.2 instead of the expected 6.0
一开始去百度这个问题,让降级gcc,尝试了gcc7、8、9都还是在报错,而且上面的版本号会变化,错误格式是不变的。两个version始终对不上。然后去stackoverflow上,让禁用lto,使用选项-fno-lto,还是根本不起作用。走投无路谷歌去了,然后在Anaconda的Github中issue#6619发现了和我同样的问题,这个应该算是Anaconda的一个隐藏bug。具体链接贴在这里 Possible problem with LTO on Anaconda 5.0 #6619 ,外国人还是非常认真,每个问题都仔细回复,篇幅和精力有限,仅在此贴出解决方案。
导致出现这个问题的原因是Anaconda使用自己的编译器,而不是我们通过sudo apt install gcc
得到的内置gcc,安装对应的编译器命令为
$ conda install gxx_linux-64
随后修改vim/src/auto/config.mk
中的LDFLAGS变量
LDFLAGS ?=
LDFLAGS += -L/usr/local/lib
然后使用
$ make distclean
命令清空之前的配置,重新运行./configure
以及make
即可。
睡了一觉之后印象不是很深,还是要多记录,解决方案是
顺便贴出我的configure.mk
文件LDFLAGS部分
确认安装成功
此时运行
$ vim --version
查看vim版本发现已经是8.2版本,并且支持python3。
要注意的是,在设置./configure文件时,只能设置python3支持,python2的支持不能设置,vim只能支持编译一种python,有的教程中会同时配置两种,最后vim --version的结果就是+python/dyn +python3/dyn,dyn是dynamic的缩写,即动态支持,这种情况vim还是会报错的。
安装SpaceVim
根据SpaceVim官方中文文档中提供的下载安装命令安装即可。
$ curl -sLf https://spacevim.org/cn/install.sh | bash
随后运行vim可以看到已经变成了SpaceVim
搭建python环境
打开~/.SpaceVim.d/init.toml
文件,加入如下命令
[[layers]]
name = "lang#python"
即完成了对python环境的支持。
至此其实python环境已经搭建完成,SpaceVim文档中有关于内置调试器的介绍,但是内置调试器有bug,只能显示第一行结果,这在其github上有人提了一个issue,但是并没有解决( Eval only shows first line #62 )。这对于我这种编程新手来说不是很方便,尤其是训练神经网络关键部分看不到就失去了调试的意义,所以便尝试使用vimspector。
安装vimspector
首先给出vimspector的项目地址,内容非常详尽。具体的配置以及使用在这里就不做枯燥的翻译工作了。
再给出一篇我第一次配置时参考过的博客Vim 最强调试插件:vimspector,帮了我很大的忙。
在这里将vimspector直接作为SpaceVim的插件安装,在init.toml
文件中加入
[[custom_plugins]]
repo = "puremourning/vimspector"
merged = false
打开SpaceVim会看到插件已经完成安装。
此时启动debug程序还太早,因为缺少必要的.vimspector.json
文件,为了检查我们是否配置有误,vimspector提供给我们测试程序,进入测试程序所在文件夹
$ cd /home/lqz/.cache/vimfiles/repos/github.com/puremourning/vimspector/support/test/python/simple_python
其中的main.py
即为测试程序,.vimspector.json
为配置文件。执行
:call vimspector#Launch()
选择第五项run,就会启动调试器并输出结果
这样就意味着我们的环境配置成功,根据github上的提示进行具体的变量配置以及个性设置就ok了。
小tips
- 安装debugpy
初次打开vimspector可能会提示没有debugpy
,先尝试官方命令
:VimspectorInstall debugpy
我使用命令的时候一直提示和远程服务器失去连接,只要将它需要下载的v1.2.1zip自己下载到对应的文件夹中就ok了,网址以及目标文件夹报错信息中都有。
- 个性化设置
官网中设置HUMAN MODE无法直接在init.toml文件中设置,参考SpaceVim中的启动函数章节,在bootstrap_before
函数中添加let g:vimspector_enable_mappings = 'HUMAN‘
即可完成映射。
最后
笔者也是新研究生,研究生还在捣鼓入门的东西好像菜了点,第一次写博客好多关键点感觉没有写出来,但是由于没有记录,也只有这些了,希望能给和我遇到同样问题的朋友提供一点帮助。最后还是想说,谷歌yyds!欢迎给我提出建议~