vim-python-jedi_vim编译jedi-vim或是YouCompleteMe完成python3的自动提示

有时候会在Ipython下写一些测试的demo,有的时候写好的就直接save到了.py文件,这时候想修改这些py文件的时候,就要用到vim,但是vim不会自动提示关键字和一些包里的方法。

没事 就试着编译了一下,需要说明的时候,一开始选型的是jedi-vim,也编译成功了。后来又试着编译了YouCompleteMe,还是比较费事的,踩了一些坑,百度的文章千篇一律,关键的问题,没有说明如何解决。

写此文,记录一下,供参考。

升级vim到vim8.x版本

vim --version | grep python

tips: vim不能同时支持python2和python3,如果要同时支持,需要以动态载入的方式来执行,这里只支持python3

1、下载

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):

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参数

--enable-rubyinterp

--enable-luainterp

--enable-perlinterp

--with-python3-config-dir=/opt2/python-3.6.5/lib/python3.6/config-3.6m-x86_64-linux-gnu

--with-python3-config-dir=/usr/local/python3.7.2/lib/python3.7/config-3.7m-x86_64-linux-gnu \

make && make install

tips:(如果make的时候出错,执行make distclean)

make distclean

3、创建软连接

mv /usr/bin/vim /usr/bin/vim_bak

ln -sf /usr/local/vim8/bin/vim /usr/bin/vim

4、查看当前vim版本是否支持python3

vim --verison | grep python3

5、测试:

python3 import subprocess;print(subprocess)

安装jedi,jedi-vim和YouCompleteMe 都依赖这个模块来完成自动提示

pip install jedi

-------vim 的 插件管理器 Vundle ---------

配置.vimrc文件,下载vundle插件,配置参数,开始DIY自己的编辑器

cd ~

touch .vimrc

vi .vimrc

set nocompatible " be iMproved, required

set backspace=indent,eol,start

filetype off " required

" set the runtime path to include Vundle and initialize

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

" let Vundle manage Vundle, required

Plugin 'VundleVim/Vundle.vim'

Plugin 'Valloric/YouCompleteMe'

" Plugin 'davidhalter/jedi-vim'

" Plugin 'ervandew/supertab'

" All of your Plugins must be added before the following line

call vundle#end() " required

set number

set background=dark

set tabstop=4

set autoindent

set softtabstop=4

syntax on

filetype plugin indent on " required

打开vim 执行安装

:PluginInstall

cd /root/.vim/bundle/YouCompleteMe

python3 install.py

Tips:

YouCompleteMe 编译出错

编译前准备工作:

1、升级gcc到 (GCC) 4.9.2,默认GCC 4.4.7不支持x11

2、YouCompleteMe,需要python3,以动态连接库的方式去编译,即python3在编译的时候需要加上:--enable-shared,同时在python3.6.5之后在使用pip的时候,需要ssl,

所以也需要指定:--with-openssl=/usr/local/ssl,/usr/local/ssl是openssl的安装路径,同时python3,需要openssl的版本在1.0.2或是1.1.1之上,所以有可能需要升级系统的

openssl版本。(具体方法查看相关的网页)

3、编译好python3之后,需要把python3的动态库加载到系统缓存(这里假设/usr/local/python3.6.8/是python3的安装路径)

修改配置:echo "/usr/local/python3.6.8/lib" >> /etc/ld.so.conf

加载:ldconfig -v

查看:ldd /usr/local/python3.6.8/bin/python3

具体步骤:

1、升级gcc到 (GCC) 4.9.2,默认GCC 4.4.7不支持x11。

1、编译gcc(这个需要的时间比较长,具体参看文章)

2、后续工作

例如安装在:/usr/local/gcc/

touch /etc/profile.d/gcc.sh

echo "export PATH=/usr/local/gcc/bin:$PATH" >> /etc/profile.d/gcc.sh

. /etc/profile.d/gcc.sh

查看系统里的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的编译工作。

完成效果:

如有问题,请在下方留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值