vim编译jedi-vim或是YouCompleteMe完成python3的自动提示
有时候会在Ipython下写一些测试的demo,有的时候写好的就直接save到了.py文件,这时候想修改这些py文件的时候,就要用到vim,但是vim不会自动提示关键字和一些包里的方法。 写此文,记录一下,供参考。 升级vim到vim8.x版本vim --version | grep python tips: vim不能同时支持python2和python3,如果要同时支持,需要以动态载入的方式来执行,这里只支持python31、下载git clone https://github.com/vim/vim.git 2、编译:vim 8.0,出错,_posixsubprocess.cpython-36m-x86_64-linux-gnu.so undefined symbol PyExc_OSError 原因:编译后,vim 需要用到:/usr/local/python3.6.8/lib/python3.6/lib-dynload/*.so动态库, 而这些动态库需要python主库的一些symbol,在vim里找不到。 最终解决(还是需要google): https://github.com/vim/vim/issues/3629 export LDFLAGS="-rdynamic",这个问题困扰了我快3天时间,百度出来的网页编译vim后,都有undefined symbol错误,其实是没有找到根本原因。 export LDFLAGS="-rdynamic",将主库里symbol导出至动态库/usr/local/python3.6.8/lib/python3.6/lib-dynload/*.so的符号表里。 rm -fr /usr/local/vim8 mkdir -p /usr/local/vim8 cd vim/src ./configure --with-features=huge --enable-cscope --enable-python3interp --with-python3-config-dir=/usr/local/python3.6.8/lib/python3.6/config-3.6m-x86_64-linux-gnu --enable-multibyte --enable-fontset --prefix=/usr/local/vim8‘ 其中:/usr/local/python3.6.8是python3的安装路径(python3要以--enable-shared参数安装,如果是python3.6.5以上,还需要指定:--with-openssl参数,下面会有原因说明) ----暂时不需要的config参数 tips:(如果make的时候出错,执行make distclean)make distclean3、创建软连接mv /usr/bin/vim /usr/bin/vim_bakln -sf /usr/local/vim8/bin/vim /usr/bin/vim 4、查看当前vim版本是否支持python3vim --verison | grep python3 5、测试:python3 import subprocess;print(subprocess) 安装jedi,jedi-vim和YouCompleteMe 都依赖这个模块来完成自动提示 -------vim 的 插件管理器 Vundle --------- git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 配置.vimrc文件,下载vundle插件,配置参数,开始DIY自己的编辑器cd ~ set nocompatible " be iMproved,required filetype off " required " set the runtime path to include Vundle and initialize " let Vundle manage Vundle,required Plugin ‘Valloric/YouCompleteMe‘ " Plugin ‘davidhalter/jedi-vim‘ " All of your Plugins must be added before the following line set number filetype plugin indent on " required 打开vim 执行安装 cd /root/.vim/bundle/YouCompleteMe python3 install.py Tips: 具体步骤: 1、编译gcc(这个需要的时间比较长,具体参看文章)2、后续工作例如安装在:/usr/local/gcc/ 查看系统里的gcc和cc编译器,which gcc,which cc,发现并没有cc编译器,指定cc编译器。ln -sf /usr/local/gcc/bin/gcc /usr/local/gcc/bin/cc 这里要注意,平时执行ln之后就会立刻生效,这里执行生成cc之后,which cc已经生效,可能去编译YouCompleteMe的时候发现使用的c 编译器还是老的GCC 4.4.7 解决办法:退出当前shell,再次进入系统进行YouCompleteMe的编译工作。 完成效果: 如有问题,请在下方留言。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |