效果:
macos 10.15.3 Catalina 默认安装是 vim8.1 / python2.7.16/python3.7.3 .
vim8.1 没有带python3支持,需要更新到最新版8.2就支持了。
1. 用brew 安装vim (没有装brew工具的参考: mac下镜像飞速安装Homebrew教程)
brew install vim
brew 是把vim装在 /usr/local/Cellar 。 并做了链接到 /usr/local/opt . 同时还安装了gdbm gettext python3.8等软件。
xulong@xulongdeMac-mini Cellar % pwd
/usr/local/Cellar
xulong@xulongdeMac-mini Cellar % ls
gdbm libyaml openssl@1.1 python@3.8 ruby vim
gettext lua perl readline sqlite xz
xulong@xulongdeMac-mini opt % pwd
/usr/local/opt
xulong@xulongdeMac-mini opt % ls -l
total 0
lrwxr-xr-x 1 xulong admin 21 5 26 21:07 gdbm -> ../Cellar/gdbm/1.18.1
lrwxr-xr-x 1 xulong admin 26 5 26 21:07 gettext -> ../Cellar/gettext/0.20.2_1
lrwxr-xr-x 1 xulong admin 23 5 26 21:07 libyaml -> ../Cellar/libyaml/0.2.4
lrwxr-xr-x 1 xulong admin 21 5 26 21:07 lua -> ../Cellar/lua/5.3.5_1
lrwxr-xr-x 1 xulong admin 21 5 26 21:07 lua@5.3 -> ../Cellar/lua/5.3.5_1
lrwxr-xr-x 1 xulong admin 28 5 26 21:07 openssl -> ../Cellar/openssl@1.1/1.1.1g
lrwxr-xr-x 1 xulong admin 28 5 26 21:07 openssl@1.1 -> ../Cellar/openssl@1.1/1.1.1g
lrwxr-xr-x 1 xulong admin 23 5 26 21:07 perl -> ../Cellar/perl/5.30.2_1
lrwxr-xr-x 1 xulong admin 23 5 26 21:07 perl@5.30 -> ../Cellar/perl/5.30.2_1
lrwxr-xr-x 1 xulong admin 26 5 26 21:07 python@3.8 -> ../Cellar/python@3.8/3.8.2
lrwxr-xr-x 1 xulong admin 24 5 26 21:07 readline -> ../Cellar/readline/8.0.4
lrwxr-xr-x 1 xulong admin 22 5 26 21:07 ruby -> ../Cellar/ruby/2.7.1_2
lrwxr-xr-x 1 xulong admin 22 5 26 21:07 ruby@2.7 -> ../Cellar/ruby/2.7.1_2
lrwxr-xr-x 1 xulong admin 23 5 26 21:07 sqlite -> ../Cellar/sqlite/3.31.1
lrwxr-xr-x 1 xulong admin 23 5 26 21:07 sqlite3 -> ../Cellar/sqlite/3.31.1
lrwxr-xr-x 1 xulong admin 22 5 26 21:08 vim -> ../Cellar/vim/8.2.0800
lrwxr-xr-x 1 xulong admin 18 5 26 21:07 xz -> ../Cellar/xz/5.2.5
xulong@xulongdeMac-mini opt %
重启 终端后,检查vim的支持情况 , 已经支持python3了,但是python2的支持去掉了。
xulong@xulongdeMac-mini opt % cd ~
xulong@xulongdeMac-mini ~ % vim --version | grep python
+comments +libcall -python +visual
+conceal +linebreak +python3 +visualextra
2.安装插件管理工具
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
3.安装 YCM 补全插件
xulong@xulongdeMac-mini ~ % vim ~/.vimrc
#添加下内容到 vimrc文件里
75 " vundle 环境设置
76 filetype off
77 set rtp+=~/.vim/bundle/Vundle.vim
78 " vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间
79 call vundle#begin()
80 Plugin 'VundleVim/Vundle.vim'
81 Plugin 'Valloric/YouCompleteMe'
82 "Plugin 'altercation/vim-colors-solarized'
83 "Plugin 'tomasr/molokai'
84 "Plugin 'vim-scripts/phd'
85 "Plugin 'Lokaltog/vim-powerline'
86 "Plugin 'octol/vim-cpp-enhanced-highlight'
87 "Plugin 'Raimondi/delimitMate'
88 " 插件列表结束
89 call vundle#end()
重新打开vim 并执行 :BundleInstall ,vim会开始安装插件,会需要很长时间,如里中间有报错可能是timeout了
可以尝试设置git的参数,重新再来。
xulong@xulongdeMac-mini ~ % git config --global http.postBuffer 524288000
xulong@xulongdeMac-mini ~ % git config --global http.lowspeedlimit=0
xulong@xulongdeMac-mini ~ % git config --global http.lowspeedtime=999999
提示完成后,还需要编译,进入 YCM插件 目录,安装CMake,然后用之前装vim时一起装好的python运行 install.py
xulong@xulongdeMac-mini YouCompleteMe % pwd
/Users/xulong/.vim/bundle/YouCompleteMe
xulong@xulongdeMac-mini YouCompleteMe % brew install CMake
xulong@xulongdeMac-mini YouCompleteMe % /usr/local/opt/python@3.8/bin/python3.8 install.py
至此 vim+ycm 补全功能 安装完成了
4. 第三方库补全的支持(重点)
目前的情况只能补全python自带的库,不能补全第三方库,原因就是之前brew 安装 vim 时,自带了一个python,那么vim内部使用的是这个自带的python,找模块时就是 按这个python 的 path 去找的。 不会去找 系统的python 更不会找pyenv 装的python了,那么外部python装的三方库自然就不会被发现。也就不能补全了。 下图看 vim内置的python
解决办法就是往 vim 内置的python 注入 模块路径
方法3:目前这是最稳定简单的方法了
vim ~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py #在return sys_path 前添加下面代码
修改.vimrc文件 ,加入下面代码
方法2:毕尽每个新项目要复制一下 ycm_extra_conf.py 来改,也挺麻烦的,重新思考了一下,应该有更简单的方法,注入path。
思路就是让vim启动时调用shell的python,取它的path再更新到vim内置python的path中。 按这个思路只要改 .vimrc如下即可。将下面完整添加到.vimrc, 以后只要进入项目目录,打开vim就能正常加载site-path ,也就实现了三方库的自动补全了。(2020-05-31 04:00)
python3 << EOF
#将当前终端的python的site-package目录加载到vim的python sys_path里
import sys
import subprocess
sitepath=subprocess.check_output("python -c 'import sys ; print(sys.path[-1])'",shell=True)
sitepath = str(sitepath,encoding='utf-8').rstrip('\n')
sys.path.append(sitepath)
EOF
方法1 .进入 项目 目录 (用了pyenv 会自动切换python版本和虚环境) ,用 pip show pip 显示 site-packages 路径。
xulongdeAir:testdir xulong$ pip show pip
Name: pip
Version: 19.2.3
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
Author-email: pypa-dev@groups.google.com
License: MIT
Location: /Users/xulong/.pyenv/versions/3.8.2/envs/test2/lib/python3.8/site-packages
Requires:
Required-by:
xulongdeAir:testdir xulong$
复制 YCM 的 .ycm_extra_conf.py 文件,并修改,加入 新的 site-pakages 路径
#从YCM复制到项目目录
xulongdeAir:testdir xulong$ cp ~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py .
#修改 加入 项目 site-packages 路径
xulongdeAir:testdir xulong$ vim .ycm_extra_conf.py
#加入路径
sys_path.insert(1, '/Users/xulong/.pyenv/versions/3.8.2/envs/test2/lib/python3.8/site-packages')
#在此前
return sys_path
安装一个三方库 pip install xlrd 测试一下补全
修改 .vimrc vim ~/.vimrc 打开vim时不显存加载.ycm_extra_conf.py提示
92 " 自动补全配置
93 let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示
94 "set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
95 autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口
96 inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" "回车即选中当前项
完成,后续在此环境下加装模块都能补全了。。。。。。
python 开发环境相关文章:
python 版本和虚拟环境搭建: pyenv 的安装和使用 记录一下避免自己下次用时忘了
cython 编译 与 pyinstaller 打包
原创 win7+Python3.7+Cython +pyinstaller 打包方法
原创 pyinstaller 打包 pillow模块 出错问题
补充错误参考:
[100%] Built target ycm_core
CMake Error: The source directory "/Users/xulong/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/cregex" does not appear to contain CMakeLists.txt.
可能是下载不完整,删掉重下,操作如下:
xulongdeAir:YouCompleteMe xulong$ rm -rf /Users/xulong/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/cregex
xulongdeAir:YouCompleteMe xulong$ git submodule update --init --recursive
Submodule path 'third_party/ycmd/third_party/cregex': checked out 'cc538bb6d0fcf0a6411537a5522d13cc9b86789d'