配置VIM-將VIM打造成爲強大的IDE

因爲學業的需要,現在開始學習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!
希望配置出你自己的“鋼鐵俠”!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章