優雅的在終端中編寫Python
前言
最早我也只是在服務器上編輯文件的時候用用vim來改改程序,并沒有把vim當做自己的主力編輯器。但是偶然的一次機會需要改一個奇葩的輸入文件的格式,用了下Vim的宏錄制,嘗到了甜頭,于是后面就開始用Vim來寫程序了,雖然使用初期有些阻力,但時間久了就會發現,雙手再也不用離開鍵盤,即使使用sublime這樣的編輯器我也要改成使用Vim模式,Vim真的能讓自己一思維的速度編輯文本(對我來說就是寫程序了)。
正好最近換了新的電腦,需要在新電腦上配置一下,就干脆把一些配置相關的東東記錄下來吧,相關的配置文件我都放在了github( https://github.com/PytLab/dotfiles ) 上并寫了相應的安裝和卸載腳本,給有需要的同學做個參考吧。
本文是有關配置的文章,并不對Vim的核心技巧進行說明,有需要的童鞋可以參考文檔和相關書籍。這里主要配合tmux和vim可以更有優雅的幫助我們在終端中進行Python編程。
先來個大致的效果圖吧:
正文 終端窗口管理工具Tmux
首先還是需要配置下tmux,它除了可以進行多window多panel以外最主要的是他提供了窗口組隨時存儲和恢復的功能。也可以幫助我們在一個窗口中使用多個panel一邊使用vim一邊在ipython中進行測試。
tmux的配置文件是當前用戶主目錄下的.tmux.conf文件,啟動tmux時會自動加載,也可以通過在tmux中進行加載例如<prefix> : source ~/.tmux.conf。
完整的配置文件參見: https://github.com/PytLab/dotfiles/blob/master/.tmux.conf
修改快捷鍵前綴
關于tmux的配置比較簡單,我先把快捷鍵的前綴從Ctrl-b換成了Ctrl-l,主要是根據個人喜好,因為這樣左手Ctrl右手l個人覺得比較方便。
修改分屏快捷鍵
tmux的分屏快捷鍵默認值為:
- <prefix> + " 水平分屏
- <prefix> + % 垂直分屏
感覺好奇怪,我就改成了相對直觀的方式:
- <prefix> + |, 類似在屏幕上加一條處置線
- <prefix> + -, 類似在屏幕上加一條水平線
將復制模式改為vim的復制模式
由于使用vim習慣了而且不想在去碰鼠標,tmux也是可以將復制模式修改成同Vim相同的方式,只是操作的前綴不同罷了。
綁定面板切換快捷鍵
這里面板切換上,我將面板的上下左右方向綁定到了kjhl四個同Vim中光標移動一樣的四個鍵上同Vim保持一致,這樣就不需要在記住新的方向鍵了。
修改面板大小的快捷鍵
這里為了能夠將大小更靈活的移動,我將鼠標控制打開,這樣就能通過鼠標進行方便精準的面板大小調整了。
配置當然要根據自己的使用習慣來設置,這里僅僅給出參考。這樣我們將多窗口終端的控制玩弄于手掌之中啦。
Vim配置
解決了終端窗口問題,我們開始大刀闊斧的搗鼓編輯器啦,這里我對我使用的幾個Vim插件進行整理,以及幾個基本配置進行下說明。
完整的vim配置文件參見: https://github.com/PytLab/dotfiles/blob/master/.vimrc
關于Vim安裝
這里主要說一下在Mac上的Vim安裝,Vim的官網以及YouCompleteMe的README都有推薦使用MacVim, 但是如果我們并不想在使用Vim的時候還打開新的窗口而是直接在終端使用Vim的話需要在安裝MacVim后做一點小處理。
1、安裝MacVim
2、使用MacVim的mvim腳本覆蓋掉系統自帶的vim
自動給打開的文件添加頭部
例如我們編寫Python腳本的時候經常會在文件開頭添加執行文件的Python路徑以及文件的編碼方式,我們可以通過在Vim的配置文件中添加一個函數,并讓他在打開一個新的緩沖區的時候自動添加到頭部。
這樣當我們使用
的時候便會匹配到文件后綴并執行頭部添加函數進行內容添加, 其他語言的腳本例如bash、perl等都是類似的方式。
安裝插件管理器Vundle
如果要安裝插件,必須要有個方便的插件管理器,Vim的插件管理器有很多,這里我使用了Vundle,它的全稱是Vim Bundle,可以讓我們輕松的安裝、更新、搜索和清理Vim插件。Vundle本身是一個Vim插件,所以使我們安裝所有插件中最早需要安裝的插件。
Vundle的安裝方式這里就不詳細介紹了,可以參見: https://github.com/VundleVim/Vundle.vim
安裝好后我們需要修改下.vimrc文件:
這樣如果我們想安裝插件的話我們只需要在call vundle#begin() 和 call vundle#end()之間直接寫入就好了,非常方便,寫好后我們直接運行
vundle便會自動下載并安裝好插件,我們直接作為伸手黨使用就好啦.
自動補全神器YouCompleteMe
YouCompleteMe是一個非常強大的Vim自動補全插件,他的特別之處就在于他并不是像vim自帶的Ctrl-x和Ctrl-n那樣基于文本進行補全,而是基于語義,通過分析源文件進行語法分析,這得益于強大的clang/llvm。同時YCM也整合了多種插件,其中也包含語法糾錯,類似Syntastic的功能,但是只能進行C/C++/Objective-C的語法檢測,對于Python的話我們后面需要安裝Syntastic插件。
YCM雖然強大,但是安裝卻稍微麻煩些,首先他文件比較大,另外需要自己進行編譯(NeoVundle插件管理器貌似可以直接幫你自動編譯), 不過無論我之前在ubuntu還是現在的mac上,至少我還是沒有遇到什么很大的問題的。
具體的安裝請參考YCM的安裝說明: https://github.com/Valloric/YouCompleteMe#installation
YCM的相關設置:
YCM除了在.vimrc中進行配置外,還有一個Python的配置文件.ycm_extra_conf.py,在里面我們可以設置相應的編譯選項,比如編譯參數,頭文件和庫文件的地址等等,這樣我們在編寫C/C++等的時候ycm會找到相應的頭文件和庫文件進行編譯并給出相應的提示。這個文件需要根據自己的項目根據自己的文件位置進行自定義。
我的.ycm_extra_conf.py的完整版: https://github.com/PytLab/dotfiles/blob/master/.ycm_extra_conf.py
為Python的縮進助力
寫Python的時候你一定需要一款幫助你顯示縮進的插件,indentLine就是一款提供縮指示線的插件,有純文字實現,有了他在判斷Python代碼塊的時候就方便了許多。
插件地址: https://github.com/Yggdroot/indentLine
我相應的配置:
效果:
對打開的多個文件進行操作
當我們寫代碼的時候不可能每次只打開一個文件,而是打開很多個,而且要經常在這之間來回切換。vim提供了自己的buffer管理工具,但是并不直觀,這時可以使用minibufexplorer插件,這樣便可以像切換tab一樣在Vim中進行buffer的切換來同時編輯多個文件。
效果如下圖:
我們可以通過根據前面的buffer序號來使用Ctrl+w :b buffer-number來快速切換。
使用Pylint來幫助我們進行Python語法檢測
首先Pylint是一個代碼分析工具,它能夠分析Python中的代碼錯誤,查找不符合風格標準(默認PEP8)和有潛在問題的代碼,如果單獨使用的話,他還可以為我們的Python代碼進行檢測并生成一份報告,并為你的代碼進行評分,像這樣:
我們可以利用syntastic插件來使用pylint幫助我們進行語法檢查。
syntastic的安裝可以直接通過Vundle來進行方便的安裝,安裝后我們需要進行下配置:
這里主要涉及兩個部分的配置,
- 一個是將檢測模式改成被動,由于Syntastic檢測并不是異步進行的,如果每次保存的時候都進行檢測,都會卡在那里等一會,如果我的代碼比較大的話會更久,所以我們在想要檢測的時候在檢測。
- 忽略掉一些我們不想看到的warnign,pylint完全按照PEP8來的話,我的代碼經常會各種提示的warning,比如我喜歡在代碼最后一行留個空行也會有提示,因此我就通過正則表達式將次信息過濾掉,這時候就需要設置syntastic_quiet_message變量了。
樹形目錄方便文件查看
像其他IDE一樣,左邊有樹形目錄的話,所有文件夾和文件都一目了然那一定是極好的,所以NERDTree插件就是這么一款工具,他可以直接通過Vundle進行安裝,然后在配置文件中設置啟動的快捷鍵以及窗口大小和忽略顯示的文件等等。
在項目中迅速定位文件
ctrlp.vim 顧名思義,就是提供了同Sublime的Ctrl+p的功能,可以直接通過Vundle安裝,在配置文件中將其映射到功能鍵上便可以快速啟動搜索,支持模糊匹配。
顯示文件中的類、函數、變量
tagbar插件可以幫助我們顯示當前文件中的類、函數、變量等,方便我們閱讀代碼,它是基于ctags的,支持很多語言。
安裝好ctags之后可以直接從Vundle中進行安裝。
在配置文件中可以將其綁定到快捷鍵上方便快速啟動。
效果如下:
其他插件
Vim 的插件很豐富,這里我就不再一一贅述了,希望這些強大的工具能讓我們在終端中更優雅的編寫Python(不限于Python啦),有關我使用的vim插件都在我的.vimrc中,有興趣的童鞋可以搜索相應的插件名稱進行查看。
同時為了方便自己我也寫了相應的安裝和卸載腳本,方便大家參考,github地址: https://github.com/PytLab/dotfiles
總結
本文主要簡單介紹下本人平時編程中使用tmux,vim等工具的配置,希望能借此幫助大家能更好的在終端中進行程序編寫提高工作效率。
最后還是建議配置文件中不要盲目復制粘貼別人的配置,最好保證里面的配置自己都知道是做什么的,而且是對自己需要的。
來自:http://www.iteye.com/news/32276