使用Anaconda時讓Vim8.2支持Python3(Win10)

使用Anaconda時讓Vim8.2支持Python3(Win10)

補充

  • 2020年4月18日:發現方案一會導致一些其他的問題,建議使用方案二。

遇到問題

從官方的GitHub裏下載的Vim 64-bit。
在這裏插入圖片描述
可以看到,已經支持了python2和python3。

另外,我使用了coc-nvim來實現補全等高級功能。

Plug 'neoclide/coc.nvim', {'branch': 'release'}

coc-nvim提供了另一套功能擴展來提供更豐富的功能支持。支持的擴展在這裏:https://www.npmjs.com/search?q=keywords%3Acoc.nvim

我選擇使用coc-snippets來支持snippets,https://www.npmjs.com/package/coc-snippets

它支持使用UltiSnips的snippets,同時也支持使用UltiSnips的大部分特性,包括使用python進行代碼段的擴展。

根據手冊[4]和文章[5],我簡單寫了一個小的片段:

snippet a_py "author's information" b
# @Time    : `!p from datetime import datetime
if not snip.c:
    snip.rv=datetime.now().strftime("%Y-%m-%d")`
# @Author  : lartpang
# @FileName: `!v expand('%')`
# @Project : ${1:ProjectName}
# @GitHub  : https://github.com/lartpang
endsnippet

但是以爲沒有做進一步python的配置,導致這裏的python代碼是沒有辦法執行的。

如何配置

方案一

主要滿足以下兩點即可:

  • 系統裏安裝和VIM相同位數和版本(包括小版本)的Python
  • 環境變量裏添加PYTHONHOME&PYTHONPATH

這裏我們需要注意幾條指令:

  1. echo has('python')
  2. echo has('python3')
  3. python print "Hello"
  4. python3 print("Hello")

前兩條會返回0或1,可以表示:when Python 2 and 3 are both available and loaded dynamically, these has() calls will try to load them. 返回1的時候說明對應版本(2或3)的python是可以檢測並且能動態載入的。一般來說,在我們開始配置前,這裏的echo返回的都是0,即並沒有檢測。

而第三條指令,是爲了查找到我們需要安裝的python小版本。如果報錯,是會提示對應的版本,這時我們就可以安裝對應的版本的python就可以。

python準備OK後(我使用的是Minicanda安裝的,直接升級了主環境裏的python),這時我們需要配置環境變量了。爲了方便的處理,這裏我們使用一款windows的軟件:rapideehttps://www.rapidee.com/,這款軟件可以很方便的修改調整系統和用戶的環境變量:
軟件截圖
我們在用戶變量裏添加兩條新的變量:
在這裏插入圖片描述
分別指向我們安裝好的python的目錄即可。

此時我們再重新打開VIM,可以輸出看看了:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這個時候我們再使用編寫的腳本,可以看到已經能夠展示時間了:
VIM_Python

方案二

似乎Vim對於使用Miniconda安裝的Python是無法檢測到的,但是對於使用官網的Python安裝包安裝的Python確是可以檢測到的。

所以我們可以這樣處理:

  • 首先安裝Miniconda,這裏推薦從https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/下載平時開發使用的版本。
  • 安裝Miniconda的時候,使用默認的勾選即可,不要添加到環境變量裏(雖然我們將無法再終端直接調用Miniconda的主環境裏的python,但是conda依然是可以使用的。
  • 單獨安裝匹配Vim的Python版本,這裏我安裝的是windows的64 bit版本(要注意,直接下載是32 bit,你得進一步選擇下)。
  • 這裏安裝獨立的Python的時候要勾選添加到環境變量裏。

這樣的流程之後,我們在終端裏輸入python,可以看到輸出:
在這裏插入圖片描述
可知,這是官方的Python安裝包對應的python。
但是激活子環境後,我們可以看到:
在這裏插入圖片描述
此時打開Vim看看:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
同時我們的子環境也可以正常使用了。這種方式相當於我們不再使用Miniconda的子環境,而是僅僅使用其管理子環境的優勢。

參考鏈接

  1. https://stackoverflow.com/questions/38132755/importerror-no-module-named-encodings/45667503#45667503
  2. 不重新編譯,讓官方網站下載的Vim支持Python: https://blog.zengrong.net/post/pyton_support_on_vim/
  3. vim無法完美支持Python2和Python 3: https://blog.csdn.net/qq_42672770/article/details/87108703
  4. https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
  5. Creating Markdown Front Matter with Ultisnips: https://jdhao.github.io/2019/12/22/ultisnips_avoid_content_update/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章