天天看點

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

從上周開始我就開始折騰 ,搞了一下 vim ide for python & go,我将整個搭建的過程整理成本篇文章分享出來,本篇是 python 版本的保姆級教程,實際上我還寫了 go 版本的,有想看的可以本篇文章點個贊,我下篇就發

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

一說到 ide,總有人會因 which one is 世界上最好的編輯工具 而吵得不可開交,但本文不會涉及、也不想誤導大家,我相信不同的人、不同的使用場景都有着有不同的最優解,世界上沒有一招通吃的編輯器。

如果是在桌面端,pycharm 和 vs code 已經做得足夠優秀,很難再有第三個編輯器可以與之匹敵。

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

但若要說在服務端?似乎沒得選,vim 幾乎是你唯一的選擇。

vim 是極具生産力的工具,甚至在某些人的眼中,它是一個魔鬼般的編輯器,之是以這麼說,是因為它的上手門檻極高,學習曲線非常的陡。

一是,它是針對程式員群體的專有編譯器,你需要額外學習并了解它的設計理念,并且需要記住非常多複雜的操作指令。

二是,對于工程項目代碼,它并不是一個開箱即用的編輯器,需要你安裝大量的插件、進行大量的配置才能成為一個稱手的 ide 工具。

之是以,我使用 vim 作為開發的工具,原因有四:

直接:正常本地 ide 編碼完後,要上傳遠端服務端進行編譯及測試,比較麻煩,我直接在 ssh 服務端進行編碼更為直接。

省心:多種語言不用再安裝多個專有的編輯器,比如 pycharm、goland 等,而且不用再為各種付費軟體破解勞心費力。

友善:提高 ipad 的生産力,外出不帶電腦也可以線上寫代碼,省得每次都帶個重重的電腦。

裝逼:你不覺得挺酷的嗎?(逃...

如果你對 vim 操作一無所知,那麼請先去了解一下 vim 的日常使用方法,否則以下内容并不适合你。

本文是在 mac 環境下進行操作示範的,但同樣适用于 linux 環境(少許差異,我會在相應位置點出),如果你隻有 windows 系統,可以使用 gvim。

在開始安裝配置之前,先說一下本文的一個整體思路:

準備運作環境:安裝 python 或者 go 環境

準備vim 版本:使用 vim 8.2 的最高版本

插件安裝環境:插件都在 github 及其他外網,需要你配置一些代理

插件安裝:一鍵批量安裝插件

插件配置:插件安裝上後,要進行一些配置才能好用

插件使用:示範每個插件的使用方法

vim 原生對 python 提供了支援,當你安裝 8.2 版本的 vim 時,會自動安裝 python ,隻不過該安裝版本并不是你需要的版本,不過不要緊,vim 運作使用的 python 版本是可以配置的。

我這邊使用的版本是 python 3.10.0

正常的 mac 或者 linux 機器都會自帶 vim 工具,隻不過可能版本比較低,如果使用這些版本的 vim ,後面有些插件會安裝不上或者使用不了,就比如 ​<code>​youcompleteme​</code>​ 這個非常重要的插件,如果你不使用 vim 8.1+ ,你每次用 vim 都會提示你,非常影響體驗

這些插件已經持續更新了很多年,對于老版的 vim 不再提供支援這也可以了解。

如果你使用的 linux ,整個過程會順暢很多,在這裡我使用的是 centos 7.6 的 linux。

首先找到系統裡安裝的 vim 包有哪些,然後使用 ​<code>​yum remove​</code>​ 去解除安裝它

後面我會使用源碼編譯的方法去安裝 vim 8.2,但編譯需要安裝如下這些基礎依賴

從 github 上下載下傳源代碼

進入 ​<code>​vim/src​</code>​ 目錄執行如下三個指令編譯安裝

不出意外的話,指令執行完成後,你隻要再配置個軟體連結,就可以正常使用 8.2 版本的 vim 了。

vim 本身提高的功能已經非常強大,但無奈上手難度實在太大,安裝一些定制化的插件,能讓整個 vim 界面管理與使用更加符合人類的直覺,降低使用門檻。

具體要安裝哪些插件,還要是看你想把 vim 打造成什麼樣子?

這個倒不必悶着頭空想,對照着桌面端的 ide 軟體去抄作業就 ok 了嘛。

對于我個人來說,我日常使用 ide 最多的功能有:

自動代碼補全

代碼追蹤跳轉

靜态代碼檢查

運作調試代碼

全局搜尋代碼

項目代碼書簽

代碼版本管理

代碼高亮顯示

工程項目的檔案樹

單檔案代碼結構樹

可同時打開多檔案

markdown 實時預覽

那我就對照這個功能去找對應的插件即可

youcompleteme:提供自動代碼補全與代碼追蹤跳轉

auto-pairs:自動補全括号的插件,包括小括号,中括号,以及花括号

nerdtree:提供工程項目的檔案樹、支援書簽功能

vim-nerdtree-tabs:可以打開多個代碼檔案,使 nerdtree 的 tab 更加友好些

nerdtree-git-plugin:可以在導航目錄中看到 git 版本資訊

tagbar:可以檢視目前代碼檔案中的變量和函數清單的插件,并切換和跳轉到代碼中對應的變量和函數的位置

vim-airline:vim狀态欄插件,包括顯示行号,列号,檔案類型,檔案名,以及git狀态

vim-gitgutter:可以在文檔中顯示 git 資訊

vim-one:代碼配色方案

markdown-preview.vim:markdown 預覽支援

mathjax-support-for-mkdp:markdown 數學公式預覽支援

vim-godef:go 中的代碼追蹤,輸入 gd 就可以自動跳轉

fatih/vim-go:靜态檢查等一系列 go 相關工具

ultisnips / vim-snippets:自動生成 代碼塊

那麼如何安裝這些插件呢?

很簡單,你隻要使用 vi 在你的 ​<code>​~/.vimrc​</code>​ 檔案中,貼入下面這段配置到檔案末尾

然後輸入指令 ​<code>​:wq​</code>​ 儲存并退出 vi。

安裝插件的管理工具有很多,比如 vundle,vim-plug 等。

vundle是一款非常出名且曆史悠久的vim插件管理工具。但随着安裝的vim插件越來越多,使用vundle來管理這些插件時效率變得越來越低,vim啟動耗時也越來越大。

而vim-plug是一款非常輕量又高效的vim插件管理工具。它支援全異步、多線程并行安裝插件,支援git分支、标簽等,可以對插件進行復原更新、還支援按需加載插件(on-demand loading),可以指定對特定檔案類型加載對應vim插件,大大加快了vim啟動時間。

是以我這裡會使用 vim-plug 這個管理工具,使用如下指令就可以安裝 ​<code>​vim-plug​</code>​ 插件管理工具

接着請重新開機一下你的終端,保證重新初始化,不然等你後面執行 ​<code>​pluginstall​</code>​ 的時候, 有可能報該指令不存在。

重新開機完終端後,輸入再次打開 ​<code>​vim​</code>​ 輸入 ​<code>​:pluginstall​</code>​ 開始安裝過程

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

如果你沒有網絡問題(不就科學那點事嘛),那麼安裝會很順利。。

輸入 ​<code>​:plugstatus​</code>​ 就會看到所有的插件都安裝 ok。

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

上面的插件安裝,其實做的事情也比較簡單,就是把 github 上的倉庫拉取到本地的 ​<code>​~/.vim/plugged​</code>​ 目錄

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

一般情況下,這些插件都是開箱即用的,不會有複雜的依賴,但唯獨一個插件比較特殊 ,它就是 ​<code>​youcompleteme ​</code>​ ,它号稱是最難安裝的 vim 插件。

我在本地的 mac 機器上裝了兩個晚上,才算把所有的依賴都解決完成,但在 linux 上就比較順利。

具體的安裝步驟是

進入 ​<code>​~/.vim/plugged/youcompleteme​</code>​ 插件目錄,修改 ​<code>​.gitmodules​</code>​ 中的 github.com 為 鏡像網站 hub.fastgit.org

然後安裝一級依賴:​<code>​git submodule update --init​</code>​

一級依賴正确安裝後,再修改 ​<code>​third_party/ycmd​</code>​ 目錄下所有依賴的​<code>​.gitmodules​</code>​ 中的 github.com 為 鏡像網站 hub.fastgit.org

然後遞歸安裝其依賴包:​<code>​git submodule update --init --recursive​</code>​

最後執行 ​<code>​python3 install.py --all​</code>​ ,--all 會安裝該插件支援的所有語言功能。

在 mac 上安裝的過程中,遇到了相當多的問題,還涉及到了改 youcomplete 的代碼,最後才得以正常安裝下去,可能你在安裝的過程中也會遇到類似的問題,如果有問題,歡迎在評論區留言,我會盡力解答。

上面安裝插件的過程其實會去 github 上下載下傳對應的插件,但由于各種不可描述的原因, 在大陸的伺服器上通路 github 是非常慢,甚至是不能通路的。

我在沒有進行任何網絡設定的情況下, 20 個插件,居然沒有一個安裝成功。

是以在這裡,你得先想辦法,讓你的伺服器能通路以正常速度通路 github,至于怎麼做,有些黑科技我這裡不友善展開細說,就給大家介紹一種可以公開、又非常有效的方法。

修改 ​<code>​~/.vim/autoload/plug.vim​</code>​ 将

改成

将這行

然後再進入 vim 執行 ​<code>​:pluginstall​</code>​ 就可以了

大部分插件安裝好後,可以立馬使用,但有一些插件需要再進行一些配置才能用得更稱手。

由于配置非常多,我這裡就不直接貼出來了,有感興趣的加我v:hello-wbm,找我要一下配置表。

youcomplete

使用 ide 最基本的訴求,不就是能夠在你編碼的時候,自動給出提示,然後自動補全嘛,vim 有了 youcomplete 的加持後,也可以 100% 還原桌面端的編碼體驗。

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

nerdtree

打開檔案後,使用 f9 或者輸入 ​<code>​nerdtreetoggle​</code>​ 就會打開側邊欄的檔案樹,這是 ​<code>​nerdtree​</code>​ 給我們提供的便利。

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

tagbar

打開 python 檔案後,使用 f9 或者輸入 ​<code>​:tagbar​</code>​ 就可以打開 ​<code>​tagbar​</code>​ 視窗,在這個視窗裡你可以看到該檔案的所有結構體、函數、變量等,這些通通可以稱做 tag,當你定位到某個 tag 時,直接回車就可以跳轉到左邊代碼視窗的位置。

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

vimgrep

vimgrep 可用于工程項目的代碼查找,對于經常閱讀源代碼的同學是必不可少的利器,它是 vim 自帶的工具,非常之強大。

用完 vimgrep 查找後,正常情況下,不會有任何的回報,如果你需要檢視搜尋的結果,并跳轉到對應的位置,可以使用 quickfix ,隻要輸入 ​<code>​:cw​</code>​ 或者 ​<code>​:copen​</code>​

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

使用 vim 寫完代碼後,想像 pycharm 一樣直接快捷鍵運作代碼,需要你在 ​<code>​.vimrc​</code>​ 中寫入如下的配置。

這段配置,不僅包括 python ,還有 bash 和 golang

配置完後,使用 ​<code>​f5​</code>​ 就可以直接運作目前的腳本。

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

如果你和我一樣,有自己的伺服器,那麼你根據上面的步驟把 vim 配置好後,就可以在 ipad 上通過 ssh 連接配接伺服器進行代碼的編寫了。

如果你沒有伺服器,隻要可以加我v: hello-wbm,我就送你一台一年期的阿裡雲伺服器,名額有限,我隻能說先到先得。

剛好我手上有一台 2020 款的 ipad pro,平時也是用來視訊居多,實在有點對不起 pro 這個配置,有了 vim 這個神器,生産力 up 了一點點。。

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

有必要說明一下,之是以花了五天這麼長的時間,其實我是把我手上的幾台電腦,包括伺服器全部配置了 vim ide,不同的機器,遇到的問題都有點不太一樣,其中在我的 mac 上,遇到的問題最多,折騰的時間最長,其中有些問題,我 google 不到答案,最後是看了代碼,修改了部分代碼才跑下去的。

另外,對于 vim 來說,最重要的就是 .vimrc 檔案,上面的講解可能我會漏了一些配置講解,如果你發現使用不是那麼順利,可以下載下傳我的 .vimrc 檔案:​​https://wwe.lanzoui.com/i9gd5vrzufi​​

本文是 python 版本的 vim ide 搭建指南,代碼示範也基本是用的是 python 代碼,根據文中我的思路一步一步操作,你可以搭建屬于自己的一套線上 ide 環境。

我不僅寫 python 代碼,還寫一些 go 的代碼, vim 對于 python 原生提供了比較多的支援,而相比之下,go 卻要安裝更多的插件才能達到不錯的編碼體驗,但由于本号大多數是 python 開發者,這一部分内容,我會再寫一篇 vim for go 的文章。感興趣的朋友給我可以給我評論區說一下,我會發給你位址。

好了,以上就是本篇文章的全部内容,如在安裝配置上有任何疑問,歡迎評論區指出~

原文首發于個人部落格:​​https://iswbm.com/591.html​​

雙十一快到了,阿裡雲也開始搞活動了,剛好我這邊可以帶大家白piao 阿裡雲的伺服器。

說白了就是大家 可以一分錢不花,就可以領到伺服器,規格是 2c2m(2vcpu 2g memory) 的機器。

昨天在朋友圈發了下,現在已經有 400 人報名參與了,今天借這篇文章再說一下,有想參加的朋友,可以加我v(hello-wbm),帶大家一起薅羊毛。

我在 『開源中國』寫過很多的 python 相關文章,其中包括 python 實用工具,python 高效技巧,pycharm 使用技巧,很高興得到了很多知乎朋友的認可和支援。

在他們的鼓勵之下,我将過往文章分門别類整理成三本 pdf 電子書

pycharm 中文指南

《pycharm 中文指南》使用 300 多張 gif 動态圖的形式,詳細講解了最貼合實際開發的 105個 pycharm 高效使用技巧,内容通俗易懂,适合所有 python 開發者。

線上體驗位址:​​https://pycharm.iswbm.com​​

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

python 黑魔法指南

《python黑魔法指南》目前迎來了 v3.0 的版本,囊集了 100 多個開發小技巧,非常适合在閑時進行碎片閱讀。

線上體驗位址:​​https://magic.iswbm.com​​

保姆級教程!将 Vim 打造一個 IDE (Python 篇)

python 中文指南

學 python 最好的學習資料永遠是 python 官方文檔,可惜現在的官方文檔大都是英文,雖然有中文的翻譯版了,但是進度實在堪憂。為了照顧英文不好的同學,我自己寫了一份 面向零基礎的朋友 的線上 python 文檔 -- 《python中文指南》

線上體驗位址:​​https://python.iswbm.com​​

保姆級教程!将 Vim 打造一個 IDE (Python 篇)