從上周開始我就開始折騰 ,搞了一下 vim ide for python & go,我将整個搭建的過程整理成本篇文章分享出來,本篇是 python 版本的保姆級教程,實際上我還寫了 go 版本的,有想看的可以本篇文章點個贊,我下篇就發
一說到 ide,總有人會因 which one is 世界上最好的編輯工具 而吵得不可開交,但本文不會涉及、也不想誤導大家,我相信不同的人、不同的使用場景都有着有不同的最優解,世界上沒有一招通吃的編輯器。
如果是在桌面端,pycharm 和 vs code 已經做得足夠優秀,很難再有第三個編輯器可以與之匹敵。
但若要說在服務端?似乎沒得選,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> 開始安裝過程
如果你沒有網絡問題(不就科學那點事嘛),那麼安裝會很順利。。
輸入 <code>:plugstatus</code> 就會看到所有的插件都安裝 ok。
上面的插件安裝,其實做的事情也比較簡單,就是把 github 上的倉庫拉取到本地的 <code>~/.vim/plugged</code> 目錄
一般情況下,這些插件都是開箱即用的,不會有複雜的依賴,但唯獨一個插件比較特殊 ,它就是 <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% 還原桌面端的編碼體驗。
nerdtree
打開檔案後,使用 f9 或者輸入 <code>nerdtreetoggle</code> 就會打開側邊欄的檔案樹,這是 <code>nerdtree</code> 給我們提供的便利。
tagbar
打開 python 檔案後,使用 f9 或者輸入 <code>:tagbar</code> 就可以打開 <code>tagbar</code> 視窗,在這個視窗裡你可以看到該檔案的所有結構體、函數、變量等,這些通通可以稱做 tag,當你定位到某個 tag 時,直接回車就可以跳轉到左邊代碼視窗的位置。
vimgrep
vimgrep 可用于工程項目的代碼查找,對于經常閱讀源代碼的同學是必不可少的利器,它是 vim 自帶的工具,非常之強大。
用完 vimgrep 查找後,正常情況下,不會有任何的回報,如果你需要檢視搜尋的結果,并跳轉到對應的位置,可以使用 quickfix ,隻要輸入 <code>:cw</code> 或者 <code>:copen</code>
使用 vim 寫完代碼後,想像 pycharm 一樣直接快捷鍵運作代碼,需要你在 <code>.vimrc</code> 中寫入如下的配置。
這段配置,不僅包括 python ,還有 bash 和 golang
配置完後,使用 <code>f5</code> 就可以直接運作目前的腳本。
如果你和我一樣,有自己的伺服器,那麼你根據上面的步驟把 vim 配置好後,就可以在 ipad 上通過 ssh 連接配接伺服器進行代碼的編寫了。
如果你沒有伺服器,隻要可以加我v: hello-wbm,我就送你一台一年期的阿裡雲伺服器,名額有限,我隻能說先到先得。
剛好我手上有一台 2020 款的 ipad pro,平時也是用來視訊居多,實在有點對不起 pro 這個配置,有了 vim 這個神器,生産力 up 了一點點。。
有必要說明一下,之是以花了五天這麼長的時間,其實我是把我手上的幾台電腦,包括伺服器全部配置了 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
python 黑魔法指南
《python黑魔法指南》目前迎來了 v3.0 的版本,囊集了 100 多個開發小技巧,非常适合在閑時進行碎片閱讀。
線上體驗位址:https://magic.iswbm.com
python 中文指南
學 python 最好的學習資料永遠是 python 官方文檔,可惜現在的官方文檔大都是英文,雖然有中文的翻譯版了,但是進度實在堪憂。為了照顧英文不好的同學,我自己寫了一份 面向零基礎的朋友 的線上 python 文檔 -- 《python中文指南》
線上體驗位址:https://python.iswbm.com