macos 10.15.3 安裝vim+python3 +ycm自動補全+第三方庫補全

效果:

 

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'

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章