標籤:
一直以來博主都是用陽春版的Vim來擼Python的,vimrc裡只有些配色、鍵位、tab設定之類的小功能。中間也被安利過一些高大上的IDE,試用過JetBrains PyCharm CE、Wing IDE和eclipse+pydev,感覺這些軟體裡諸如code navigation,refactor,documentation這些功能的確非常強大,但是IDE的工作模式始終為我所不喜:本來可以快速開始幹活的,非要經曆等個好幾秒鐘(甚至好幾分鐘如果是公司的PC)開啟軟體,建立project,選擇interpreter,取個名字,選個目錄,添加檔案……這一系列動作以後,一開始想的什麼已經全然不記得了。我們使用Python的一大理由就是人生苦短我用Python能快速抓住靈感,立刻動手建模。需要Python日常處理的問題有可能一個小指令碼就解決了,這種情況最好用的工具其實是文字編輯器。只有當問題解決了,靈感抓住了,原型建立起來了之後,我們發現需要進一步完善,或者可以修改以增強通用性,或者需要發布給別人使用時,才需要動用到IDE。所以說呢,在博主看來,類似Vim的,具備基本到高階代碼編輯功能,可以快速開啟先寫程式再儲存的文字編輯器才是能讓你第一時間進入需要處理問題的領域絕佳的工具。
好吧,吐槽結束。本文將假設您跟我類似,是一位有經驗的Vim使用者,能熟練運用C-w、C-v、m、q等較為高階的功能,卻很少折騰配置(所以這篇博文還能對您有些價值)。這樣的話,您可能會發現,當Python檔案大於500行,import的module多於10個且有些不是很熟悉之後,用Vim所提升的那部分工作效率,會被不停地查文檔給降了下來。而您跟我一樣,又覺得在原始碼小於5000行的情況下用IDE簡直是殺雞用牛刀,所以對500到5000行的活兒找不到合適的工具這件事非常苦惱。這樣的話,就跟我一起開始折騰吧。
編譯64-bit的Vim
首先呢,由於有的Vim外掛程式使用了Python(比如等會我們要用到的python-mode),我們的Vim必須支援Python。如果您跟我一樣從來都是從Vim官網的下載頁下載Vim的話,這個官方編譯版本已經附帶了Python支援,只是這個Vim是32位的。用:version命令可以看到Vim的版本和編譯選項,如。
使用命令:echo has(‘python‘)可以看到是否運作正常。但是很不幸,由於種種原因博主使用了Anaconda的64-bit套裝,輸入命令:echo has(‘python‘)顯示的是 0。Vim官網並未提供編譯好的64位Vim安裝檔案,只提到如果需要64位支援請使用alternative distribution,而官網給出的64位第三方發布版本頁面已經申明停止維護(汗),並把博主帶到了這裡。看來看去,這些第三方發布的版本無非是整合了patch,既然這樣,我們為何不按自己的要求編譯一個最適合自己的版本呢?
然後博主找到了尹良燦先生部落格上的這篇文章,實驗了一下,發現編譯Vim其實非常簡單。
工作環境
我們需要patch,C編譯器,資源編譯器,make等整套工具以及一個shell,這裡博主使用的是msys64,也就是新的mingw和msys的64位版。(關於msys64的安裝和配置,博主後面有時間會再說明。)
下載Vim原始碼和補丁
首先要下載Vim的原始碼和補丁,鑒於國內的網路連Vim官網FTP簡直慢到令人髮指,我們還是用中科大的Vim鏡像(順便稱讚一下中科大、北理工等高校和機構,他們真是國內開源事業的基石啊!)
mkdir ~/makevimcd ~/makevimwget -c http://mirrors.ustc.edu.cn/vim/pc/vim74src.zipwget -c http://mirrors.ustc.edu.cn/vim/pc/vim74rt.zipunzip vim74src.zipunzip vim74rt.zipmkdir patches https://mirrors.ustc.edu.cn/vim/patches/7.4/cd patcheswget -c -r -np -nd -e robots=off cd ..tar cvf patches.tar patches/
打包patches其實沒啥意義,是為了萬一弄錯好備用,因為下載778個補丁檔案真的有點麻煩(笑)。
給原始碼打補丁
接下來就是把這778個補丁打進原始碼,確保cwd是~/makevim/vim/vim74,然後使用下面的命令。
cd vim/vim74for file in ../../patches/*; do patch -f -s -Np0 -i $file; done
由於我們下載了所有的補丁檔案,裡麵包含了對其他系統(如OS/2什麼的)的補丁,如果只是
patch -Np0 -i <patch_file>
的話,中間patch會因為找不到檔案頻繁提問讓我們skip。所以這裡直接加上-f -s選項,就是為了省下敲鍵盤的時間。
開始編譯
補丁打好之後就可以開始編譯了。用下面的make命令就可以。博主不會使用Ruby、Perl或者Lua(電腦上也沒有裝,也不知道缺少了這些會怎麼樣,反正要的時候再編譯一遍也很容易)Python也只用2.7,所以這裡就沒加上這些語言的支援(如果您需要的話,也可以很容易添加)。
make -f Make_cyg_ming.mak CC=x86_64-w64-mingw32-gcc RC=windres ARCH=x86-64 PYTHON=/c/Users/NicholasYF/Anaconda PYTHON_VER=27 DYNAMIC_PYTHON=yes -j5 GUI=yes STATIC_STDCPLUS=yes OLE=yes FEATURES=HUGE USERNAME=NicholasYfZhou USERDOMAIN=msys64
編譯速度還算快,好了以後我們得到gvim.exe等檔案,就算完成了。由於編譯選項裡已經指定了Python的目錄,所以這一次用:version命令我們可以看到:
看到Included patches: 1-778了嗎?第一步即將大功告成!
需要命令列vim.exe的話,還可以改一下編譯開關GUI=no,再make一下。如果要整合到Windows系統,先移動幾個檔案:
mv *.exe ..mv GvimExt/gvim.dll ..
再以管理員身份運行~/vim/vim74/install.exe,選擇d,install.exe將會在案頭和開始菜單建立捷徑,在windows目錄建立批次檔,並將“Edit with Vim”整合到右鍵菜單。
將Vim打造成Python快速開發環境(一)