Vim - 配置IDE一般的python環境
Vim 作為一個經典的編輯器,如果配置合適,可以成為一個編輯python腳本非常給力的工具。這篇文章主要目的是介紹如何打造一個強大的vim編輯環境。
第一部分:軟體安裝:
在終端中執行:
vim --versionn
得到:
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Oct 5 2017 04:42:50)nMacOS X (unix) versionnIncluded patches: 1-1175nCompiled by travis@Traviss-Mac-592.localnHuge version with MacVim GUI. Features included (+) or not (-):n+acl +find_in_path -mouse_sysmouse -tag_any_whiten+arabic +float +mouse_urxvt -tcln+autocmd +folding +mouse_xterm +termguicolorsn+balloon_eval -footer +multi_byte +terminaln+browse +fork() +multi_lang +terminfon++builtin_terms +fullscreen -mzscheme +termresponsen+byte_offset -gettext +netbeans_intg +textobjectsn+channel -hangul_input +num64 +timersn+cindent +iconv +odbeditor +titlen+clientserver +insert_expand +packages +toolbarn+clipboard +job +path_extra +transparencyn+cmdline_compl +jumplist +perl/dyn +user_commandsn+cmdline_hist +keymap +persistent_undo +vertsplitn+cmdline_info +lambda +postscript +virtualeditn+comments +langmap +printer +visualn+conceal +libcall +profile +visualextran+cryptv +linebreak +python/dyn +viminfon+cscope +lispindent +python3/dyn +vreplacen+cursorbind +listcmds +quickfix +wildignoren+cursorshape +localmap +reltime +wildmenun+dialog_con_gui +lua/dyn +rightleft +windowsn+diff +menu +ruby/dyn +writebackupn+digraphs +mksession +scrollbind -X11n+dnd +modify_fname +signs -xfontsetn-ebcdic +mouse +smartindent +ximn+emacs_tags +mouseshape +startuptime -xpmn+eval +mouse_dec +statusline -xsmpn+ex_extra -mouse_gpm -sun_workshop -xterm_clipboardn+extra_search -mouse_jsbterm +syntax -xterm_saven+farsi +mouse_netterm +tag_binary n+file_in_path +mouse_sgr +tag_old_static n...n
這裡要確認兩件事:
- Vim的版本要求不低於7.3
- 要求支持python,確保列表中有+python
不同系統下Vim的安裝方式如下:
OSX:
安裝homebrew,然後在終端中執行:
brew updatenbrew install vimn
*NIX:
在Debian或者Ubuntu上,執行:
sudo apt-get remove vim-tinynsudo apt-get updatensudo apt-get install vimn
Windows:
參考官方文檔
第二部分:配置文件
vim的配置文件是
~/.vimrcn
你可以講需要的配置加入配置文件中,重新啟動vim或者在normal環境中執行
:source %n
便可載入配置文件
編輯vimrc文件,可以執行:
vim ~/.vimrcn
有用的配置內容有:
set nocompatiblensyntax onnfiletype plugin indent onnset icnset hlsearchnset encoding=utf-8nset fileencodings=utf-8,ucs-bom,GB2312,big5nset cursorlinenset autoindentnset smartindentnset scrolloff=4nset showmatchnset nun
窗口移動:
vim的默認窗口移動方式是Ctrl+w Ctrl+hjkl,但是這樣太過複雜,對此進行綁定:
nnoremap <C-J> <C-W><C-J>nnnoremap <C-K> <C-W><C-K>nnnoremap <C-L> <C-W><C-L>nnnoremap <C-H> <C-W><C-H>n
為python的特殊配置有:
let python_highlight_all=1nau Filetype python set tabstop=4nau Filetype python set softtabstop=4nau Filetype python set shiftwidth_=4nau Filetype python set textwidth_=79nau Filetype python set expandtabnau Filetype python set autoindentnau Filetype python set fileformat=unixnautocmd Filetype python set foldmethod=indentnautocmd Filetype python set foldlevel=99n
自動執行:按一下F5,自動執行代碼:
map <F5> :call CompileRunGcc()<CR>nfunc! CompileRunGcc()n exec "w"n if &filetype == cn exec "!g++ % -o %<"n exec "!time ./%<"n elseif &filetype == cppn exec "!g++ % -o %<"n exec "!time ./%<"n elseif &filetype == javan exec "!javac %"n exec "!time java %<"n elseif &filetype == shn :!time bash %n elseif &filetype == pythonn exec "!clear"n exec "!time python3 %"n elseif &filetype == htmln exec "!firefox % &"n elseif &filetype == gon " exec "!go build %<"n exec "!time go run %"n elseif &filetype == mkdn exec "!~/.vim/markdown.pl % > %.html &"n exec "!firefox %.html &"n endifnendfuncn
第三部分:有用的插件
安裝插件強烈建議使用插件管理工具,這裡推薦的是vundle
首先安裝vundle:
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vimn
然後在vimrc中加入:
set nocompatible " requirednfiletype off " requirednn" set the runtime path to include Vundle and initializenset rtp+=~/.vim/bundle/Vundle.vimncall vundle#begin()nn" alternatively, pass a path where Vundle should install pluginsn"call vundle#begin(~/some/path/here)nn" let Vundle manage Vundle, requirednPlugin gmarik/Vundle.vimnn" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)nnn" All of your Plugins must be added before the following linencall vundle#end() " requirednfiletype plugin indent on " requiredn
關閉後重新打開vim,在normal模式下執行:
:PluginInstalln
插件管理工具會自動的安裝配置文件中寫到的插件。
安裝其他插件的方式是:比如對於autofomat,其github主頁是:https://github.com/Chiel92/vim-autoformat
在vimrc中加入
Plugin Chiel92/vim-autoformatn
關閉後重新打開vim,在normal模式下執行下述代碼即可:
Plugin Chiel92/vim-autoformatn
第四部分:推薦的插件:
1、YouCompleteMe
為了成為一個IDE,必須要有自動補全工具,這裡強烈推薦YouCompleteMe
強烈建議按照官方說明一步一步進行安裝,史上最難安裝的vim插件並非名副其實
2、Autoformat
這個插件vim-autoformat能夠自動的一鍵格式化代碼
Before:
After:
安裝方式:
這款插件需要已經安裝有代碼格式化工具,安裝方式是在終端下執行:
pip install autopep8n
推薦的配置是:
Plugin Chiel92/vim-autoformatnnnoremap <F6> :Autoformat<CR>nlet g:autoformat_autoindent = 0nlet g:autoformat_retab = 0nlet g:autoformat_remove_trailing_spaces = 0n
每次在normal環境下按F6便可以格式化代碼
3、文件樹
在vim中瀏覽文件夾:nerdtree
推薦配置是:
Plugin https://github.com/scrooloose/nerdtreennnoremap <F3> :NERDTreeToggle<CR>nautocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endifn
通過按<F3>開關文件樹
4、不同顏色區分括弧匹配
這個插件使用不同的顏色高亮匹配的括弧:rainbow_parentheses
Plugin kien/rainbow_parentheses.vimnlet g:rbpt_colorpairs = [n [brown, RoyalBlue3],n [Darkblue, SeaGreen3],n [darkgray, DarkOrchid3],n [darkgreen, firebrick3],n [darkcyan, RoyalBlue3],n [darkred, SeaGreen3],n [darkmagenta, DarkOrchid3],n [brown, firebrick3],n [gray, RoyalBlue3],n [darkmagenta, DarkOrchid3],n [Darkblue, firebrick3],n [darkgreen, RoyalBlue3],n [darkcyan, SeaGreen3],n [darkred, DarkOrchid3],n [red, firebrick3],n ]nlet g:rbpt_max = 16nlet g:rbpt_loadcmd_toggle = 0nau VimEnter * RainbowParenthesesTogglenau Syntax * RainbowParenthesesLoadRoundnau Syntax * RainbowParenthesesLoadSquarenau Syntax * RainbowParenthesesLoadBracesn
5、強大的狀態欄
這款插件提供了加強版的狀態欄:vim-airline
推薦配置:
Plugin https://github.com/bling/vim-airlinen
6、代碼檢查工具
感謝丁春的評論:
ale代替synatastic,有奇效
嘗試了ale,確實很不錯,它利用了vim8的非同步處理功能,用起來不會有syntastic的卡頓現象
確保你的vim版本不低於8.0
安裝方式:
和syntastic一樣,它需要代碼檢測工具支持:
pip install flake8n
推薦配置是:
Plugin w0rp/alen let g:ale_fix_on_save = 1n let g:ale_completion_enabled = 1n let g:ale_sign_column_always = 1n let g:airline#extensions#ale#enabled = 1n
syntastic提供了自動代碼檢查功能,再也不用擔心變數寫錯了。
安裝方式:
這款插件需要已經安裝好代碼檢測工具,python代碼檢查工具的安裝方式是在終端下執行:
pip install flake8n
推薦配置是:
Plugin scrooloose/syntasticnset statusline+=%#warningmsg#nset statusline+=%{SyntasticStatuslineFlag()}nset statusline+=%*nlet g:syntastic_always_populate_loc_list = 1nlet g:syntastic_auto_loc_list = 1nlet g:syntastic_check_on_open = 1nlet g:syntastic_check_on_wq = 0n
第五部分:推薦
最後推薦一下自己寫一的一個vim插件:setbreakpoints_python
它的功能是按一下F12,自動在所在行上方加入set_trace(),並且在文件開頭加入相應的模塊導入
按F12之前:
按一下F12:
再按一下F12,就回到第一張圖的情況了
推薦配置:
Plugin sillybun/setbreakpoints_pythonnautocmd FileType python nnoremap <F12> :call ToggleBreakPoint()<Cr>n
2. autoformat
這是我實現的第二個插件,它實現了python自動格式化代碼功能,每次輸入完一條語句,上一條語句就會自動的調用autopep8進行格式化
它實現的功能是每寫完一條語句比如
a.num=a.num+1n
在輸入完這條語句按下回車後,插件會自動的將它拍版成PEP 8標準的python風格代碼:
a.num = a.num + 1n
安裝方式:
在配置文件中放入:
Plugin sillybun/autoformatpythonstatementnautocmd FileType python let g:autoformatpython_enabled = 1n
插件使用python3完成,需要vim的python3支持
我的vim配置文件是vimrc
推薦閱讀:
※Vim 折騰記
※打造Python開發工具——vim+zsh+tmux
※SpaceVim 模塊化狀態欄
※從零開始配置跨平台多人合作LaTeX論文寫作環境
※vim 中文輸入解決方案