標籤:

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

這裡要確認兩件事:

  1. Vim的版本要求不低於7.3
  2. 要求支持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主頁是:github.com/Chiel92/vim-

在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 中文輸入解決方案

TAG:Python | Vim | vimrc |