因爲學業的需要,現在開始學習Python。同時最近換了新的電腦,也用了新系統-Ubuntu,它是Linux系統。然後我就考慮啊,以後要使用什麼編輯器比較好呢?!
之前編寫Web Application都是使用Sublime Text3.感覺用的挺舒服的,界面和插件都比較豐富,用的也順手。現在需要另外一個編輯器來替換它。要能夠再Linux系統下方便的使用!又很多的擴展插件!界面也要好看!
這幾個都統統指向了一個編輯器:VIM。傳說中極客必備編輯器!
我這極客心啊。已經被燃的不要不要的。
但是傳統的VIM並不好用,只有當它安裝上了那些傳說級的插件,才能變身“鋼鐵俠”,拯救猿猿的世界!
接下來就說明一下自己配置的IDE!
安裝 vim
如果派的系統裏面已經安裝了 vim,需要檢查一下 這個 vim 是否滿足:
- 版本大於 7.3
- 支持 Python
輸入命令 ‘vim —version’ 會出來一堆信息,包括版本號跟支持的特性,檢查一下里面有沒有 +python 字樣。
如果預安裝的 vim 並不滿足需求,那麼你就需要將已經安裝的 vim remove 掉:
sudo get-install remove vim
接着安裝 vim,並不能使用下面這個命令
sudo apt-get install vim
這樣安裝之後得到的 vim 是默認的 version,缺少 Python 支持,所以很多用 Python 編寫的插件都無法使用,比如說 YouCompleteMe(大量的補全插件集合)。所以你可以選擇用源碼編譯安裝 vim,而我之前就是死在了這裏。於是我選擇了另一個方法,親測可用:
sudo apt-get install vim-nox
如果你已經將默認的軟件源註釋掉,更換爲國內源的話,可能在裝的時候會遇到一些麻煩:一些依賴沒有辦法滿足:
The following packages have unmet dependencies:
vim-nox : Depends: vim-common (= 2:7.3.547-7) but 2:7.4.488-7 is to be installed
Depends: libperl5.14 (>= 5.14.2) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
所以這時候保證默認的源在你的 /etc/apt/source.list 文件裏面是可用的:
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
順利的話會安裝完成。
安裝 Vundle
Vundle 是 vim 的衆多插件管理器之一,也算是使用最爲廣泛的一個。安裝 Vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
該命令將下載Vundle插件管理器,並將它放置在 Vim 編輯器 bundles 文件夾中,接着,就可以通過 .vimrc 配置文件來管理所有插件了。
在用戶文件夾裏面創建 vim 的配置文件:
touch ~/.vimrc
將下面的 Vundle 配置項目添加到配置文件的頂部
set nocompatible " required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
上面中間空白的地方就是用來引入你的插件。具體格式應該怎麼編寫,可以參照 Vundle 。引入插件之後,使用下面兩種任一種方法來安裝:
- 運行 vim 然後執行 :PluginInstall 命令
- 直接在命令行執行 vim +PluginInstall +qall
安裝插件 YouCompleteMe
YouCompleteMe 是非常強大的代碼補全工具,它可以理解代碼的上下文然後做出補全提示。
在安裝 YCM 之前,我們需要先安裝一些工具:
sudo apt-get install python-dev python3-dev cmake
注意,如果這裏沒有激活默認的軟件源地址的話,可能會出現依賴無法滿足而導致無法安裝。
安裝完成之後,增加一下交換內存來避免 error: virtual memory exhausted,因爲待會編譯 YCM 之前需要下載一堆工具。
sudo vim /etc/dphys-swapfile
#edit this line
#CONF_SWAPFILE=100
CONF_SWAPFILE=1000
接着在 ~/.vimrc 文件裏面引入 YCM 插件:
Plugin 'Valloric/YouCompleteMe'
然後 :PluginInstall 一下,YCM 就會從 github 上面 clone 到 ~/.vim/bundle/ 裏面。
cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer
然後進入 YouCompleteMe 文件夾裏面執行 ./install.py 執行安裝,應該會提示你先執行另一個 git 命令將 thirdParty 所需要的所有庫給 clone 下來,按照提示做就是了。clone 完成之後再執行 ./install.py。
完成之後可以添加這個配置,來讓完成補全之後 preview 窗口自動消失:
let g:SimpylFold_docstring_preview=1
外如果你也不喜歡補全的時候多出一個分割小窗口顯示 docstring,可以這樣配置:
" 補全內容不以分割子窗口形式出現,只顯示補全列表
set completeopt-=preview
安裝完成後,插件自帶的設置效果就很好,但是我們還可以進行一些小的調整:
let g:ycm_autoclose_preview_window_after_completion=1
map <leader>g :YcmCompleter GoToDefinitionElseDeclaration<CR>
上面的第一行確保了在你完成操作之後,自動補全窗口不會消失,第二行則定義了“轉到定義”的快捷方式。
支持Virtualenv虛擬環境
上面“轉到定義”功能的一個問題,就是默認情況下Vim不知道virtualenv虛擬環境的情況,所以你必須在配置文件中添加下面的代碼,使得Vim和YouCompleteMe能夠發現你的虛擬環境:
"python with virtualenv support
py << EOF
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
project_base_dir = os.environ['VIRTUAL_ENV']
activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
EOF
這段代碼會判斷你目前是否在虛擬環境中編輯,然後切換到相應的虛擬環境,並設置好你的系統路徑,確保YouCompleteMe能夠找到相應的site packages文件夾。
安裝插件 NERDTree
NERDTree 可以提供一個便捷的文件樹形結構:
首先再~/.vimrc中添加
Plugin 'scrooloose/nerdtree'
如果你想用 tab 控制 NERDTree,可以利用vim-nerdtree-tabs插件實現:
Plugin 'jistr/vim-nerdtree-tabs'
然後添加下面的配置來隱藏 .pyc 文件:
let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree
之後進入 vim,使用命令 :help NERD_tree.txt 可以查看使用手冊。
安裝插件 vim-fugitive
vim-fugitive 插件可以讓你在 vim 中執行一些簡單的 Git 命令。
Plugin 'tpope/vim-fugitive'
配置 Vim
安裝完成這麼多插件之後,接下來配置一下 Vim 讓它更加順手。
1.快速切換 split view
在 .vimrc 文件裏面加入下面的配置:
"使用vim方向鍵來切換編輯窗口 Ctrl+H/J/K/L
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
2.代碼摺疊
在 .vimrc 中添加下面的配置來開啓代碼摺疊功能:
" 允許摺疊
set foldmethod=indent
set foldlevel=99
使用空格來代替 za 來實現摺疊跟取消折疊:
" 允許用空格來摺疊
nnoremap <space> za
第一個命令,set foldmethod=ident 會根據每行的縮進開啓摺疊。但是這樣做會出現超過你所希望的摺疊數目。插件 SimplyFold 可以解決這個問題。在.vimrc中加入下面這行代碼,通過Vundle進行安裝:
Plugin 'tmhedberg/SimpylFold'
如果希望看到摺疊代碼的文檔字符串,就加入下面的配置:
let g:SimpylFold_docstring_preview=1
3.Python 代碼縮進
參考資料3對這部分講得比較全面詳細,我採用自己的配置方法:
au BufNewFile,BufRead *.py
\ set tabstop=4
\ set softtabstop=4
\ set shiftwidth=4
\ set textwidth=79
\ set expandtab
\ set autoindent
\ set fileformat=unix
4.標示不必要的空白字符(有些問題)
避免出現多餘的空白字符,可以讓 Vim 幫忙標記出來,容易刪除:
" 用紅色標記多餘空白
highlight BadWhitespace ctermbg=red guibg=red
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/
5.支持 UTF-8 編碼
大部分情況下,進行Python開發時你應該使用UTF-8編碼:
set encoding=utf-8
6.語法檢查/高亮(有些問題)
通過安裝syntastic插件,每次保存文件時Vim都會檢查代碼的語法:
Plugin 'scrooloose/syntastic'
還可以通過這個小巧的插件,添加PEP8代碼風格檢查:
Plugin 'nvie/vim-flake8'
最後,讓你的代碼變得更漂亮:
let python_highlight_all=1
syntax on
7.配色方案
配色方案可以和你正在使用的基礎配色共同使用。GUI模式可以嘗試solarized方案, 終端模式可以嘗試Zenburn方案:
Plugin 'jnurmine/Zenburn'
Plugin 'altercation/vim-colors-solarized'
接下來,只需要添加一點邏輯判斷,確定什麼模式下使用何種方案就可以了:
if has('gui_running')
set background=dark
colorscheme solarized
else
colorscheme Zenburn
endif
Solarized方案同時提供了暗色調和輕色調兩種主題。要支持切換主題功能(按F5)也非常簡單,只需添加:
call togglebg#map("<F5>")
8.超級搜索
想要在Vim中搜索任何文件?試試ctrlP插件吧:
Plugin 'kien/ctrlp.vim'
正如插件名,按Ctrl+P就可以進行搜索。如果你的檢索詞與想要查找的文件相匹配的話,這個插件就會幫你找到它。哦,對了——它不僅僅可以搜索文件,還能檢索標籤!更多信息,可以觀看這個Youtube視頻。
9.顯示行號
開啓顯示行號:
set nu
10.Powerline狀態欄
Powerline是一個狀態欄插件,可以顯示當前的虛擬環境、Git分支、正在編輯的文件等信息。
這個插件是用Python編寫的,支持諸如zsh、bash、tmux和IPython等多種環境。
Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}
請查閱插件的官方文檔,瞭解配置選項。
11.系統剪貼板
通常Vim會忽視系統剪貼板,而使用自帶的剪貼板。但是有時候你想從Vim之外的程序中剪切、複製、粘貼文本。在OS X平臺上,你可以通過這行代碼訪問你的系統剪貼板:
set clipboard=unnamed
12.Shell開啓Vim編輯模式
最後,當你熟練掌握了Vim和它的鍵盤快捷方式之後,你會發現自己經常因爲shell中缺乏相同的快捷鍵而懊惱。沒關係,大部分的shell程序都有Vi模式。在當前shell中開啓Vi模式,你只需要在~/.inputrc文件中添加這行代碼:
set editing-mode vi
現在,你不僅可以在shell中使用Vim組合快捷鍵,還可以在Python解釋器以及任何利用GNU Readline程序的工具(例如,大多數的數據庫shell)中使用。現在,你在什麼地方都可以使用Vim啦!
結語
Vim的設置到這裏就差不多了(至少對於Python開發來說是這樣的)。當然,開源世界裏還有大量你可以使用的其他擴展,以及本文中所提到插件的替代品。
資源
- Vim Tutor是Vim自帶的程序,安裝結束之後,只要在命令行輸入vimtutor即可,程序將會用Vim編輯器教你如何使用Vim。
- Vimcasts是一系列的高階視頻教程,內容涉及許多Vim的功能。
- Vim官方文檔
- Open Vim
- 笨辦法學Vimscript是學習vimscript的極好材料。
OVER!
希望配置出你自己的“鋼鐵俠”!