Python開發利器 如何將Vim打造為強大的Python開發環境

2021-02-20 編程派


Vim是Linux 系統上的最著名的文本/代碼編輯器,它的最大特色是完全使用鍵盤命令進行編輯,脫離了滑鼠操作雖然使得入門變得困難,但上手之後鍵盤流的各種巧妙組合操作卻能帶來極為大幅的效率提升。另外,由於 Vim 的可配置性非常強,各種插件、語法高亮配色方案等多不勝數。本文介紹就是如何將Vim打造成強大的Python開發環境。 ——EarlGrey@編程派

下面是最終效果預覽。

如果想充分地利用好本文,你應該對如何使用Vim和它的命令模式至少有一個基本的了解。如果你是初學者,你可以通過vim-adventure或者openvim網站學習。在繼續閱讀本文之前,請花點時間瀏覽那兩個網站的內容。

1. 安裝

因為許多Unix衍生系統已經預裝了Vim,我們首先要確認編輯器是否成功安裝:

vim --version

在這一步,你要確保已經滿足以下兩點要求:

Vim編輯版本應該大於7.3。

支持Python語言。在所選編輯器的功能中,確保你看到了+python。

如果滿足上述要求,接下來可以安裝Vim擴展了。如果不滿足,則需要安裝/升級。

1.1 OS X

如果沒有Homebrew,建議馬上安裝,並運行:

brew updatebrew install vim

1.2 Unix衍生系統

Debian或Ubuntu系統,可以使用下面的代碼:

sudo apt-get remove vim-tinyapt-get updateapt-get install vim

如果是其他版本的Linux系統,請查閱相應版本包管理器的文檔。

1.3 Windows

Windows系統下安裝Vim有很多種方法。請查閱官方文檔。

2. 驗證安裝

確保你已經安裝了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開發的強大環境。

3. Vim擴展

Vim本身能夠滿足開發人員的很多需求,但是它的可擴展性也極強,並且已經有一些殺手級的擴展,可以讓Vim擁有「現代」集成開發環境的特性。所以,你所需要的第一件東西就是一個好用的擴展管理器。

Vim的擴展通常也被成為bundle或插件。

3.1 Vundle

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 " requiredfiletype off " required" set the runtime path to include Vundle and initializeset rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin()" alternatively, pass a path where Vundle should install plugins"call vundle#begin('~/some/path/here')" let Vundle manage Vundle, requiredPlugin '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 linecall vundle#end() " requiredfiletype plugin indent on " required

這樣,你就完成了使用Vundle前的設置。之後,你就可以在配置文件中添加希望安裝的插件,然後打開Vim編輯器,運行下面的命令:

:PluginInstall

這個命令告訴Vundle施展它的魔法——自動下載所有的插件,並為你進行安裝和更新。

對於Windows用戶,請查閱Windows安裝指南。

4. 開始打造IDE吧

本文不可能列舉Vim的全部功能,只能快速介紹一些Vim自帶的強大功能,它們對於Python開發來說是非常有用的。

4.1 扔掉滑鼠

或許,Vim編輯器最重要的功能就是它不要求使用滑鼠(除了GUI版本外)。一開始,你可能會覺得這是個非常糟糕的做法,但是只要你投入時間——是的,這很花時間——學習快捷組合鍵,就可以大幅提升工作流的速度。

4.2 分割布局(Split Layouts)

使用:sv <filename>命令打開一個文件,你可以縱向分割布局(新文件會在當前文件下方界面打開),使用相反的命令:vs <filename>, 你可以得到橫向分割布局(新文件會在當前文件右側界面打開)。

你還可以嵌套分割布局,所以你可以在分割布局內容再進行分割,縱向或橫向都可以,直到你滿意為止。眾所周知,我們開發時經常需要同時查看多個文件。

專業貼士:記得在輸入完:sv後,利用tab補全功能,快速查找文件。

專業貼士:你還可以指定屏幕上可以進行分割布局的區域,只要在.vimrc文件中添加下面的代碼即可:

set splitbelowset splitright

專業貼士:想要不使用滑鼠就切換分割布局嗎?只要將下面的代碼添加到.vimrc文件中,你就可以通過快捷組合鍵進行切換。

"split navigationsnnoremap <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>

組合快捷鍵:

- Ctrl-j 切換到下方的分割窗口

- Ctrl-k 切換到上方的分割窗口

- Ctrl-l 切換到右側的分割窗口

- Ctrl-h 切換到左側的分割窗口

換句話說, 按Ctrl+Vim的標準移動鍵,就可以切換到指定窗口。

等等,nnoremap是什麼意思?——簡單來說,nnoremap將一個組合快捷鍵映射為另一個快捷鍵。no部分,指的是在Vim的正常模式(Normal Mode)下,而不是可視模式下重新映射。基本上,nnoremap <C-J> <C-W><C-j>就是說,當我在正常模式按下時,進行操作。更多信息請看這裡。

4.3 緩衝區(Buffers)

雖然Vim支持tab操作,仍有很多人更喜歡緩衝區和分割布局。你可以把緩衝區想像成最近打開的一個文件。Vim提供了方便訪問近期緩衝區的方式,只需要輸入:b <buffer name or number>,就可以切換到一個已經開啟的緩衝區(此處也可使用自動補全功能)。你還可以通過ls命令查看所有的緩衝區。

專業貼士: 在:ls命令輸出的最後,Vim會提示「敲擊Enter繼續查看」,這時你可以直接輸入:b <buffer name>,立即選擇緩衝區。這樣可以省掉一個按鍵操作,也不必去記憶緩衝區的名字。

4.4 代碼摺疊(Code Folding)

大多數「現代」集成開發環境(IDE)都提供對方法(methods)或類(classes)進行摺疊的手段,只顯示類或方法的定義部分,而不是全部的代碼。

你可以在.vimrc中添加下面的代碼開啟該功能:

" Enable foldingset foldmethod=indentset foldlevel=99

這樣就可以實現,但是你必須手動輸入za來摺疊(和取消摺疊)。使用空格鍵會是更好的選擇。所以在你的配置文件中加上這一行命令吧:

" Enable folding with the spacebarnnoremap <space> za

現在你可以輕鬆地隱藏掉那些當前工作時不需要關注的代碼了。

第一個命令,set foldmethod=ident會根據每行的縮進開啟摺疊。但是這樣做會出現超過你所希望的摺疊數目。但是別怕,有幾個擴展就是專門解決這個問題的。在這裡,我們推薦SimplyFold。在.vimrc中加入下面這行代碼,通過Vundle進行安裝:

Plugin 'tmhedberg/SimpylFold'

不要忘記執行安裝命令::PluginInstall

專業貼士: 希望看到摺疊代碼的文檔字符串?

let g:SimpylFold_docstring_preview=1

4.5 Python代碼縮進

當然,想要代碼摺疊功能根據縮進情況正常工作,那麼你就會希望自己的縮進是正確的。這裡,Vim的自帶功能無法滿足,因為它實現不了定義函數之後的自動縮進。我們希望Vim中的縮進能做到以下兩點:

首先,縮進要符合PEP8標準。

其次,更好地處理自動縮進。

4.5.1 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

4.5.2 自動縮進

自動縮進有用,但是在某些情況下(比如函數定義有多行的時候),並不總是會達到你想要的效果,尤其是在符合PEP8標準方面。我們可以利用indentpython.vim插件,來解決這個問題:

Plugin 'vim-scripts/indentpython.vim'

4.6 標示不必要的空白字符

我們希望避免出現多餘的空白字符。可以讓Vim幫我們標示出來,使其很容易發現並刪除。

au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/

這會將多餘的空白字符標示出來,很可能會將它們變成紅色突出。

4.7 支持UTF-8編碼

大部分情況下,進行Python開發時你應該使用UTF-8編碼,尤其是使用Python 3的時候。確保Vim設置文件中有下面的命令:

set encoding=utf-8

4.8 自動補全

支持Python自動補全的最好插件是YouCompleteMe。我們再次使用Vundle安裝:

Bundle 'Valloric/YouCompleteMe'

YouCompleteMe插件其實底層使用了一些不同的自動補全組件(包括針對Python開發的Jedi),另外要安裝一些C庫才能正常工作。插件官方文檔提供了很好的安裝指南,我就不在這裡重複了。切記跟隨文檔的步驟進行安裝。

安裝完成後,插件自帶的設置效果就很好,但是我們還可以進行一些小的調整:

let g:ycm_autoclose_preview_window_after_completion=1map <leader>g :YcmCompleter GoToDefinitionElseDeclaration<CR>

上面的第一行確保了在你完成操作之後,自動補全窗口不會消失,第二行則定義了「轉到定義」的快捷方式。

4.9 支持Virtualenv虛擬環境

上面「轉到定義」功能的一個問題,就是默認情況下Vim不知道virtualenv虛擬環境的情況,所以你必須在配置文件中添加下面的代碼,使得Vim和YouCompleteMe能夠發現你的虛擬環境:

"python with virtualenv supportpy << EOFimport osimport sysif '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文件夾。

4.10 語法檢查/高亮

通過安裝syntastic插件,每次保存文件時Vim都會檢查代碼的語法:

Plugin 'scrooloose/syntastic'

還可以通過這個小巧的插件,添加PEP8代碼風格檢查:

Plugin 'nvie/vim-flake8'

最後,讓你的代碼變得更漂亮:

let python_highlight_all=1syntax on

4.11 配色方案

配色方案可以和你正在使用的基礎配色共同使用。GUI模式可以嘗試solarized方案, 終端模式可以嘗試Zenburn方案:

Plugin 'jnurmine/Zenburn'Plugin 'altercation/vim-colors-solarized'

接下來,只需要添加一點邏輯判斷,確定什麼模式下使用何種方案就可以了:

if has('gui_running') set background=dark colorscheme solarizedelse colorscheme Zenburnendif

Solarized方案同時提供了暗色調和輕色調兩種主題。要支持切換主題功能(按F5)也非常簡單,只需添加:

call togglebg#map("<F5>")

4.12 文件瀏覽

如果你想要一個不錯的文件樹形結構,那麼NERDTree是不二之選。

Plugin 'scrooloose/nerdtree'

如果你想用tab鍵,可以利用vim-nerdtree-tabs插件實現:

Plugin 'jistr/vim-nerdtree-tabs'

還想隱藏.pyc文件?那麼再添加下面這行代碼吧:

let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree

4.13 超級搜索

想要在Vim中搜索任何文件?試試ctrlP插件吧:

Plugin 'kien/ctrlp.vim'

正如插件名,按Ctrl+P就可以進行搜索。如果你的檢索詞與想要查找的文件相匹配的話,這個插件就會幫你找到它。哦,對了——它不僅僅可以搜索文件,還能檢索標籤!更多信息,可以觀看這個Youtube視頻。

4.14 顯示行號

開啟顯示行號:

set nu

4.15 Git集成

想要在Vim中執行基本的Git命令?vim-fugitive插件則是不二之選。

Plugin 'tpope/vim-fugitive'

4.16 Powerline狀態欄

Powerline是一個狀態欄插件,可以顯示當前的虛擬環境、Git分支、正在編輯的文件等信息。

這個插件是用Python編寫的,支持諸如zsh、bash、tmux和IPython等多種環境。

Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}

4.17 系統剪貼板

通常Vim會忽視系統剪貼板,而使用自帶的剪貼板。但是有時候你想從Vim之外的程序中剪切、複製、粘貼文本。在OS X平臺上,你可以通過這行代碼訪問你的系統剪貼板:

set clipboard=unnamed

4.18 Shell開啟Vim編輯模式

最後,當你熟練掌握了Vim和它的鍵盤快捷方式之後,你會發現自己經常因為shell中缺乏相同的快捷鍵而懊惱。沒關係,大部分的shell程序都有Vi模式。在當前shell中開啟Vi模式,你只需要在~/.inputrc文件中添加這行代碼:

set editing-mode vi

現在,你不僅可以在shell中使用Vim組合快捷鍵,還可以在Python解釋器以及任何利用GNU Readline程序的工具(例如,大多數的資料庫shell)中使用。現在,你在什麼地方都可以使用Vim啦!

5. 結語

Vim的設置到這裡就差不多了(至少對於Python開發來說是這樣的)。當然,開源世界裡還有大量你可以使用的其他擴展,以及本文中所提到插件的替代品。你最喜愛的擴展是什麼?你又是如何將Vim設置符合你喜好的?

(有刪減,查看完整全文請點擊「閱讀原文」。)

相關焦點

  • Python-mode:在 Vim 編輯器中開發 Python 應用的 Vim 插件
    推薦閱讀: 如何用 Bash-Support 插件將 Vim 編輯器打造成編寫 Bash 腳本的 IDE[2]這個插件包含了所有你在 Vim 編輯器中可以用來開發 Python 應用的特性。Python-mode 的特性它包含下面這些值得一提的特性:在這篇教程中,我將闡述如何在 Linux 中為 Vim 安裝設置 Python-mode,從而在 Vim 編輯器中開發 Python 應用。
  • 如何在Vim裡高效地開發Python程序?
    如果這讓你對使用 Vim 作為開發工具感興趣,那看這篇就對了。本文介紹就是如何將 Vim 打造成強大的 Python 開發環境。 下面是最終效果預覽。如果想充分地利用好本文,你應該對如何使用Vim和它的命令模式至少有一個基本的了解。如果你是初學者,你可以通過 vim-adventure 或者 openvim 網站學習。
  • Python-mode: 開發Python應用的Vim插件
    這個插件幾乎包含了你要開發Python程序所需的所有功能。Python-mode,以便於你能更方便地在Linux下的Vim中做Python開發。如何為Linux下的Vim安裝Python-mode首先安裝Pathogen,這個工具能讓你的安裝和配置都變得超容易。運行下面命令來獲取Pathogen.vim,並準備好它需要的目錄結構。
  • Python開發利器 將Sublime Text 3打造成強大的Python開發環境
    本文譯自realpython.com的一篇教程,可以讓你快速地將ST3改造成Python開發環境。——EarlGrey@編程派在本文章中,我們將會看到如何將 Sublime Text 打造成為 Python 的全棧開發環境(從前端到後端),如何通過自定義主題和插件來增強它的基本功能,並且還將會涉及到很多使 ST3 變得更加強大的常用的命令,特性以及快捷鍵。
  • python基礎開發環境配置
    python 安裝python的安裝主要分為三個步驟:python二進位可執行程序的安裝環境變量配置Unix/Linux 環境設置Windows環境設置Mac環境設置常用python庫的安裝python二進位可執行程序的安裝下載好二進位
  • VS Code:Python開發利器
    用於開發 Python 的 IDE 有很多,IDE的全稱是Integrated Development Environment,中文稱為集成開發環境,它是用於提供程序開發環境的應用程式,一般包括代碼編輯器、編譯器、調試器等,具有圖形化用戶界面。通俗的說,IDE 就是一個讓我們方便地寫 Python 代碼並運行和調試代碼的軟體。
  • 5分鐘學會將Vim 8.2打造成Python IDE
    清晰大圖及下載見原文 https://www.linuxidc.com/Linux/2019-08/159772.htm本文給大家介紹的是在Ubuntu 18.04 LTS系統下使用Vim配置Python開發環境的詳細步驟
  • 如何獲得更好的 Python 開發體驗?
    其實花一點時間選擇優秀的庫,將為以後的開發節省大量時間,並帶來更快樂的編碼體驗。在理想世界中,所有開發人員的關係是相互依賴和關聯的(協作開發),代碼要有完美的格式、沒有低級的錯誤、並且測試覆蓋了所有代碼。另外,所有這些將在每次提交時都可以得到保證。
  • 使用 Python 開發 BurpSuite 插件
    對於 BurpSuite 這個利器,相信大家肯定比較熟悉,也利用過其中的一些功能強大插件。
  • Anaconda+VSCode搭建python開發環境
    Anaconda 配合VSCode 搭建一個適用與機器學習,AI,數據科學領域學習與開發的Python開發環境。Anaconda包括Conda、Python以及一大堆安裝好的工具包,比如:numpy、pandas等。VScode集成git和debug功能,小巧但功能十分強大。
  • 跟我學Ubuntu下將Vim 8.2打造成Python IDE
    本文給大家介紹的是在Ubuntu 20.04 LTS系統下使用Vim配置Python開發環境的詳細步驟,對初學者非常實用,有需要的小夥伴可以參考下。下面就用Vim打造了屬於自己的Python IDE,然後進行配置。Ubuntu 20.04 LTS 下安裝 Python 3.9。參考連結:https://www.linuxmi.com/ubuntu-20-04-python-3-9.htmlUbuntu 20.04 LTS Desktop初始安裝自帶了vi,未帶 vim 需要安裝,已安裝的略過。
  • windows上python開發環境的搭建
    對於程序開發而言,需要的就是一個良好的開發環境。對於C,C++, java等靜態性語言而言,需要通過IDE(集成開發環境)來便利開發過程;對於perl, python這種動態性語言而言,其開發環境的搭建就顯得簡單多了,只需要安裝好對應的解釋器,以及選擇一個順手的編輯器即可。
  • 使用Vim做python IDE
    所以我已經越來越了解它,Vim也已經變成了我不可多得的一個夥伴,所以我將分享我在使用python時利用Vim作為我開發工具的一些設置配置。我不是說這種方法就是絕對好的方法,但它對我來說有用。我知道有些例子和我的很相似,但這是我自己使用過並且認為是有用的工具,如果你有好的建議,提議,或者了解其他其他一些好用的工具,我非常願意在留言中聽到你們的回覆。
  • python程式設計師開發必備的5大工具,你用過幾個?
    利用python開發,大牛用vim,接了2個顯示器寫python,氣場甚是強大。  有些程式設計師表示,jetbrains全家桶解決一切。還有的程式設計師說:sublime+python插件足矣!  那麼,有哪些值得推薦的Python開發工具呢?下面w3cschool就開始分享乾貨:  0、Anaconda  Anaconda簡直是做數據分析的利器。
  • 教你從零把 Mac 打造成開發利器
    開發工程師很多人都說 Mac 比 Windows 更適合做開發,那關鍵是要把 Mac 配置好,下面就來和大家分享一下如何從零開始把一臺新 Mackbook 打造成開發利器。>python(vscode python擴展包)go(go 擴展包)    6. vscode shell 選擇,zsh首選項/設置, 搜索 terminal.integrated.shell.osx ,設置值為 /usr/local/bin/zshvscode python 解釋器選擇⇧⌘P, 搜索 select interpreter
  • 打造一個強大的ROS開發IDE
    對於 ROS 開發可以使用 RoboWare 或者使用 Qt, 但是長期使用 linux 的人習慣了命令行。 linux 下的文本編輯器使用最多的還是 Vim 。可不可以將 Vim 打造成一個好用的 IDE 來替代或者部分替代這些高大上的 IDE 呢? 程序猿天生喜歡折騰。
  • 如何在Eclipse中配置Python開發環境?
    Eclipse是著名的跨平臺集成開發環境(IDE),最初主要用來Java語言開發。但是我們通過安裝不同的插件Eclipse可以支持不同的計算機語言。比如說,我們可以通過安裝PyDev插件,使Eclipse成為一個非常優秀的Python IDE。本文的主題,就是如何在Eclipse上安裝PyDev插件,配置Python開發環境。
  • Ubuntu 18.04配置Vim支持Python的IDE環境
    本文給大家介紹的是在Ubuntu 18.04 LTS系統下使用Vim配置Python開發環境的詳細步驟,對初學者非常實用,有需要的小夥伴可以參考下
  • Python開發環境配置
    Python語言解釋器是一個輕量級小尺寸軟體(文件大小約為25~30MB),這裡教你兩種下載方式:(1)在本公眾號內回復關鍵詞「
  • 如何在手機上配置 Python 環境
    Android平板或手機上搭建Python開發環境,幫助Python初學者有效利用碎片化時間進行學習,從而達到良好的學習效果。安裝基本組件在配置Python開發環境前,我們還需要使用如下命令安裝一些基本軟體包:pkg install -y zsh curl wget build-essentialpkg install -y git python nodejs-lts perl ipythonpkg install -y neovim lazygit ranger fzf二、終端配置1