摘要:編輯器安裝完成后,我們來看看如何將其設置為開發的強大環境。開始打造吧本文不可能列舉的全部功能,只能快速介紹一些自帶的強大功能,它們對于開發來說是非常有用的。其次,更好地處理自動縮進。
本文由編程派-EarlGrey翻譯,原文出自realpython,是Vim的愛好者專門針對利用Sublime Text 3設置Python IDE一文所寫。譯者本人也是依照Sublime Text那篇文章配置的開發環境,但一直對Vim作為神器的美名非常仰慕,又看到了一篇這么全面的配置文章,覺得有必要翻譯過來與大家分享,想必可以省卻很多自己研究如何配置的時間。
我注意到,有人在realpython.com宣揚Sublime Text 3。作為公司的資深開發人員(呃,也就是老古董),我覺得有義務介紹一個真正的Python開發環境給大家——我要推薦的當然就是Vim了。不錯,Vim編輯器無處不在,速度快,從來不會崩潰。并且,它能做任何事情!
不過,不利之處也有,就是Vim配置起來很讓人頭疼。但是,別擔心,本文將告訴你如何配置一個強大的Vim環境,專門用于天天搗鼓Python開發。
下面是最終效果預覽。
安裝如果想充分地利用好本文,你應該對如何使用Vim和它的命令模式至少有一個基本的了解。如果你是初學者,你可以通過vim-adventure或者openvim網站學習。在繼續閱讀本文之前,請花點時間瀏覽那兩個網站的內容。
因為許多Unix衍生系統已經預裝了Vim,我們首先要確認編輯器是否成功安裝:
vim --version
如果已經安裝了,你應該看到類似下面的文字:
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 5 2014 21:00:28) Compiled by root@apple.com Normal version without GUI. Features included (+) or not (-): -arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent -clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments -conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path +find_in_path +float +folding -footer +fork() -gettext -hangul_input +iconv +insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent +listcmds +localmap -lua +menu +mksession +modify_fname +mouse -mouseshape -mouse_dec -mouse_gpm -mouse_jsbterm -mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte +multi_lang -mzscheme +netbeans_intg -osfiletype +path_extra -perl +persistent_undo +postscript +printer -profile +python/dyn -python3 +quickfix +reltime -rightleft +ruby/dyn +scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" user exrc file: "$HOME/.exrc" fall-back for $VIM: "/usr/share/vim" Compilation: gcc -c -I. -D_FORTIFY_SOURCE=0 -Iproto -DHAVE_CONFIG_H -arch i386 -arch x86_64 -g -Os -pipe Linking: gcc -arch i386 -arch x86_64 -o vim -lncurses
在這一步,你要確保已經滿足以下兩點要求:
Vim編輯版本應該大于7.3。
支持Python語言。在所選編輯器的功能中,確保你看到了+python。
如果滿足上述要求,接下來可以安裝Vim擴展了。如果不滿足,則需要安裝/升級。
OS X如果沒有Homebrew,建議馬上安裝,并運行:
brew update brew install vimUnix衍生系統
Debian或Ubuntu系統,可以使用下面的代碼:
sudo apt-get remove vim-tiny apt-get update apt-get install vim
如果是其他版本的Linux系統,請查閱相應版本包管理器的文檔。不清楚的話,可以先閱讀這篇文章:安裝Vim
WindowsWindows系統下安裝Vim有很多種方法。請查閱官方文檔。
驗證安裝確保你已經安裝了7.3版本以上、支持Python的Vim編輯器。你可以再次運行vim --version進行確認。如果你想知道Vim中使用的Python版本,你可以在編輯器中運行:python import sys; print(sys.version)。
2.7.6 (default, Sep 9 2014, 15:04:36) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)]
這行命令會輸出你的編輯器當前的Python版本。如果報錯,那么你的編輯器就不支持Python語言,需要重裝或重新編譯。
Vim編輯器安裝完成后,我們來看看如何將其設置為Python開發的強大環境。
Vim擴展Vim本身能夠滿足開發人員的很多需求,但是它的可擴展性也極強,并且已經有一些殺手級的擴展,可以讓Vim擁有“現代”集成開發環境的特性。所以,你所需要的第一件東西就是一個好用的擴展管理器。
VundleVim的擴展通常也被成為bundle或插件。
Vim有多個擴展管理器,但是我們強烈推薦Vundle。你可以把它想象成Vim的pip。有了Vundle,安裝和更新包這種事情不費吹灰之力。
我們現在來安裝Vundle:
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
該命令將下載Vundle插件管理器,并將它放置在你的Vim編輯器bundles文件夾中。現在,你可以通過.vimrc配置文件來管理所有擴展了。
將配置文件添加到你的用戶的home文件夾中:
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
這個命令告訴Vundle施展它的魔法——自動下載所有的插件,并為你進行安裝和更新。
開始打造IDE吧對于Windows用戶,請查閱Windows安裝指南。
本文不可能列舉Vim的全部功能,只能快速介紹一些Vim自帶的強大功能,它們對于Python開發來說是非常有用的。
扔掉鼠標或許,Vim編輯器最重要的功能就是它不要求使用鼠標(除了GUI版本外)。一開始,你可能會覺得這是個非常糟糕的做法,但是只要你投入時間——是的,這很花時間——學習快捷組合鍵,就可以大幅提升工作流的速度。
分割布局(Split Layouts)使用:sv
你還可以嵌套分割布局,所以你可以在分割布局內容再進行分割,縱向或橫向都可以,直到你滿意為止。眾所周知,我們開發時經常需要同時查看多個文件。
專業貼士:記得在輸入完:sv后,利用tab補全功能,快速查找文件。
專業貼士:你還可以指定屏幕上可以進行分割布局的區域,只要在.vimrc文件中添加下面的代碼即可:
set splitbelow set splitright
專業貼士:想要不使用鼠標就切換分割布局嗎?只要將下面的代碼添加到.vimrc文件中,你就可以通過快捷組合鍵進行切換。
"split navigations nnoremapnnoremap nnoremap nnoremap
組合快捷鍵:
Ctrl-j 切換到下方的分割窗口
Ctrl-k 切換到上方的分割窗口
Ctrl-l 切換到右側的分割窗口
Ctrl-h 切換到左側的分割窗口
換句話說, 按Ctrl+Vim的標準移動鍵,就可以切換到指定窗口。
緩沖區(Buffers)等等,nnoremap是什么意思?——簡單來說,nnoremap將一個組合快捷鍵映射為另一個快捷鍵。一開始的n,指的是在Vim的正常模式(Normal Mode)下,而不是可視模式下重新映射。基本上,nnoremap
就是說,當我在正常模式按下 時,進行 操作。更多信息請看這里。
雖然Vim支持tab操作,仍有很多人更喜歡緩沖區和分割布局。你可以把緩沖區想象成最近打開的一個文件。Vim提供了方便訪問近期緩沖區的方式,只需要輸入:b
專業貼士: 在:ls命令輸出的最后,Vim會提示“敲擊Enter繼續查看”,這時你可以直接輸入:b
大多數“現代”集成開發環境(IDE)都提供對方法(methods)或類(classes)進行折疊的手段,只顯示類或方法的定義部分,而不是全部的代碼。
你可以在.vimrc中添加下面的代碼開啟該功能:
" Enable folding set foldmethod=indent set foldlevel=99
這樣就可以實現,但是你必須手動輸入za來折疊(和取消折疊)。使用空格鍵會是更好的選擇。所以在你的配置文件中加上這一行命令吧:
" Enable folding with the spacebar nnoremapza
現在你可以輕松地隱藏掉那些當前工作時不需要關注的代碼了。
第一個命令,set foldmethod=ident會根據每行的縮進開啟折疊。但是這樣做會出現超過你所希望的折疊數目。但是別怕,有幾個擴展就是專門解決這個問題的。在這里,我們推薦SimplyFold。在.vimrc中加入下面這行代碼,通過Vundle進行安裝:
Plugin "tmhedberg/SimpylFold"
不要忘記執行安裝命令::PluginInstall
專業貼士: 希望看到折疊代碼的文檔字符串?
let g:SimpylFold_docstring_preview=1Python代碼縮進
當然,想要代碼折疊功能根據縮進情況正常工作,那么你就會希望自己的縮進是正確的。這里,Vim的自帶功能無法滿足,因為它實現不了定義函數之后的自動縮進。我們希望Vim中的縮進能做到以下兩點:
首先,縮進要符合PEP8標準。
其次,更好地處理自動縮進。
PEP8
要支持PEP8風格的縮進,請在.vimrc文件中添加下面的代碼:
au BufNewFile,BufRead *.py set tabstop=4 set softtabstop=4 set shiftwidth=4 set textwidth=79 set expandtab set autoindent set fileformat=unix
這些設置將讓Vim中的Tab鍵就相當于4個標準的空格符,確保每行代碼長度不超過80個字符,并且會以unix格式儲存文件,避免在推送到Github或分享給其他用戶時出現文件轉換問題。
另外,對于全棧開發,你可以設置針對每種文件類型設置au命令:
au BufNewFile,BufRead *.js, *.html, *.css set tabstop=2 set softtabstop=2 set shiftwidth=2
自動縮進
自動縮進有用,但是在某些情況下(比如函數定義有多行的時候),并不總是會達到你想要的效果,尤其是在符合PEP8標準方面。我們可以利用indentpython.vim插件,來解決這個問題:
Plugin "vim-scripts/indentpython.vim"標示不必要的空白字符
我們希望避免出現多余的空白字符。可以讓Vim幫我們標示出來,使其很容易發現并刪除。
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /s+$/
這會將多余的空白字符標示出來,很可能會將它們變成紅色突出。
支持UTF-8編碼大部分情況下,進行Python開發時你應該使用UTF-8編碼,尤其是使用Python 3的時候。確保Vim設置文件中有下面的命令:
set encoding=utf-8自動補全
支持Python自動補全的最好插件是YouCompleteMe。我們再次使用Vundle安裝:
Bundle "Valloric/YouCompleteMe"
YouCompleteMe插件其實底層使用了一些不同的自動補全組件(包括針對Python開發的Jedi),另外要安裝一些C庫才能正常工作。插件官方文檔提供了很好的安裝指南,我就不在這里重復了。切記跟隨文檔的步驟進行安裝。
安裝完成后,插件自帶的設置效果就很好,但是我們還可以進行一些小的調整:
let g:ycm_autoclose_preview_window_after_completion=1 mapg :YcmCompleter GoToDefinitionElseDeclaration
上面的第一行確保了在你完成操作之后,自動補全窗口不會消失,第二行則定義了“轉到定義”的快捷方式。
支持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文件夾。
語法檢查/高亮通過安裝syntastic插件,每次保存文件時Vim都會檢查代碼的語法:
Plugin "scrooloose/syntastic"
還可以通過這個小巧的插件,添加PEP8代碼風格檢查:
Plugin "nvie/vim-flake8"
最后,讓你的代碼變得更漂亮:
let python_highlight_all=1 syntax on配色方案
配色方案可以和你正在使用的基礎配色共同使用。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("文件瀏覽")
如果你想要一個不錯的文件樹形結構,那么NERDTree是不二之選。
Plugin "scrooloose/nerdtree"
如果你想用tab鍵,可以利用vim-nerdtree-tabs插件實現:
Plugin "jistr/vim-nerdtree-tabs"
還想隱藏.pyc文件?那么再添加下面這行代碼吧:
let NERDTreeIgnore=[".pyc$", "~$"] "ignore files in NERDTree超級搜索
想要在Vim中搜索任何文件?試試ctrlP插件吧:
Plugin "kien/ctrlp.vim"
正如插件名,按Ctrl+P就可以進行搜索。如果你的檢索詞與想要查找的文件相匹配的話,這個插件就會幫你找到它。哦,對了——它不僅僅可以搜索文件,還能檢索標簽!更多信息,可以觀看這個Youtube視頻.
顯示行號開啟顯示行號:
set nuGit集成
想要在Vim中執行基本的Git命令?vim-fugitive插件則是不二之選。
Plugin "tpope/vim-fugitive"
請看Vimcasts的這部視頻,了解更多情況。
Powerline狀態欄Powerline是一個狀態欄插件,可以顯示當前的虛擬環境、Git分支、正在編輯的文件等信息。
這個插件是用Python編寫的,支持諸如zsh、bash、tmux和IPython等多種環境。
Plugin "Lokaltog/powerline", {"rtp": "powerline/bindings/vim/"}
請查閱插件的官方文檔,了解配置選項。
系統剪貼板通常Vim會忽視系統剪貼板,而使用自帶的剪貼板。但是有時候你想從Vim之外的程序中剪切、復制、粘貼文本。在OS X平臺上,你可以通過這行代碼訪問你的系統剪貼板:
set clipboard=unnamedShell開啟Vim編輯模式
最后,當你熟練掌握了Vim和它的鍵盤快捷方式之后,你會發現自己經常因為shell中缺乏相同的快捷鍵而懊惱。沒關系,大部分的shell程序都有Vi模式。在當前shell中開啟Vi模式,你只需要在~/.inputrc文件中添加這行代碼:
set editing-mode vi
現在,你不僅可以在shell中使用Vim組合快捷鍵,還可以在Python解釋器以及任何利用GNU Readline程序的工具(例如,大多數的數據庫shell)中使用。現在,你在什么地方都可以使用Vim啦!
結語Vim的設置到這里就差不多了(至少對于Python開發來說是這樣的)。當然,開源世界里還有大量你可以使用的其他擴展,以及本文中所提到插件的替代品。你最喜愛的擴展是什么?你又是如何將Vim設置符合你喜好的?
這是我本人的Vim配置文件鏈接。你有沒有自己的設置代碼?請與我們分享!
謝謝!
資源Vim Tutor是Vim自帶的程序,安裝結束之后,只要在命令行輸入vimtutor即可,程序將會用Vim編輯器教你如何使用Vim。
Vimcasts是一系列的高階視頻教程,內容涉及許多Vim的功能。
Vim官方文檔
Open Vim
笨辦法學Vimscript是學習vimscript的極好材料。
全文結束
網友評論精選譯者也按照本文的步驟,在Vagrant虛擬機上嘗試了Vim設置,但是可惜在YouCompleteMe插件那遇到了些問題,沒有繼續配置下去。在原文頁,我也發現一些網友留言,說根據本文的建議進行了設置,但是碰到了問題。最后,譯者從中摘取了部分,供大家參考。
Wei-Hao Lin
The commands in "Python Indentation" keep throwing "e518: unknown option: set", so i altered it and it works fine as following:
au BufNewFile,BufRead *.py set tabstop=4 | set softtabstop=4 | set shiftwidth=4 | set textwidth=79 | set expandtab | set autoindent | set fileformat=unix | au BufNewFile,BufRead *.js,*.html,*.css set tabstop=2 | set softtabstop=2 | set shiftwidth=2 |
Konstantin Gagarin
change powerline to airlineand add powerline fonts.
Ruslan Kiianchuk
It seems like the hack with Python virtualenv can be solved with plugin without the need to pollute vimrc with Python code: https://github.com/jmcantrell/vim-virtualenv
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44169.html
摘要:編輯器安裝完成后,我們來看看如何將其設置為開發的強大環境。開始打造吧本文不可能列舉的全部功能,只能快速介紹一些自帶的強大功能,它們對于開發來說是非常有用的。其次,更好地處理自動縮進。 本文由編程派-EarlGrey翻譯,原文出自realpython,是Vim的愛好者專門針對利用Sublime Text 3設置Python IDE一文所寫。譯者本人也是依照Sublime Text那篇文章...
摘要:這正是使用編輯器的基本形式。禁用啟動消息即顯示所有教程信息的頁面。因此,只使用編輯器并且完美支持所有這些語言將會大大提高工作效率。結語正如你所見,明顯是最好的編輯器。 本文是realpython.com繼《將Sublime Text 3打造為Python全棧開發環境及》和《Vim與Python真乃天作之合》,又一篇關于如何配置Python IDE的文章。這一次,主角變成了與Vim同樣...
摘要:概述工欲善其事必先利其器,如果現在要評選數據科學中最好用的編輯器注意一定是可以通過訪問的,和一定是角逐的最大熱門,正確使用編輯器可以很大地提升我們的工作效率。 概述 showImg(https://segmentfault.com/img/bVAdol); 工欲善其事必先利其器,如果現在要評選數據科學中最好用的Web 編輯器(注意一定是可以通過Web訪問的),RStudio和Jupyt...
摘要:蠎周刊年度最贊親俺們又來回顧又一個偉大的年份兒包去年最受歡迎的文章和項目如果你錯過了幾期就這一期不會丟失最好的嗯哼還為你和你的準備了一批紀念裇從這兒獲取任何時候如果想分享好物給大家在這兒提交喜歡我們收集的任何意見建議通過來吧原文 Title: 蠎周刊 2015 年度最贊Date: 2016-01-09 Tags: Weekly,Pycoder,Zh Slug: issue-198-to...
摘要:如果你問一個年輕的前端開發人員,你在今后的年內如何提升自己的能力他可能會說我現在對前端比較熟悉,但我想深入了解,另外現在發展的很快我也想看一下。再舉一個例子,我會留意身邊的程序員所用的鍵盤。只有少部分的程序員會買高端的靜電容鍵盤,比如。 如果你問一個年輕的前端開發人員,你在今后的 3 年內如何提升自己的能力?他可能會說我現在對 Web 前端比較熟悉,但我想深入了解 AngularJS,...
閱讀 2561·2021-11-22 09:34
閱讀 3539·2021-11-15 11:37
閱讀 2341·2021-09-13 10:37
閱讀 2105·2021-09-04 16:40
閱讀 1564·2021-09-02 15:40
閱讀 2456·2019-08-30 13:14
閱讀 3326·2019-08-29 13:42
閱讀 1903·2019-08-29 13:02