效果:
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 [email protected] [email protected] 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 [email protected] -> ../Cellar/lua/5.3.5_1
lrwxr-xr-x 1 xulong admin 28 5 26 21:07 openssl -> ../Cellar/[email protected]/1.1.1g
lrwxr-xr-x 1 xulong admin 28 5 26 21:07 [email protected] -> ../Cellar/[email protected]/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 [email protected] -> ../Cellar/perl/5.30.2_1
lrwxr-xr-x 1 xulong admin 26 5 26 21:07 [email protected] -> ../Cellar/[email protected]/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 [email protected] -> ../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/[email protected]/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: [email protected]
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'