用 Vim 寫 Python 的最佳實務

來源:互聯網
上載者:User

標籤:www   gui   支援   先來   實踐   symbol   啟用   連結   each   

先來曬個圖:

對於一些 Python 的小項目,使用 vim 是一個不錯的選擇。本文內容整理自我在知乎的回答 用用 Vim 寫 Python 的最佳實務是什嗎?,下面的內容是對知乎舊有回答的一個補充,尤其有一些主要針對 vim8. 如果想要更多內容,可以查看知乎對於該問題的一些回答。

語法檢查

如果用 vim8, 那麼可以用非同步檢測的 w0rp/ale 代替 syntastic 了,再也不用羨慕 flycheck, 也不用因為語法檢查而卡頓了。

關於 ale 這部分的個人化配置,其實有點 “吹毛求疵”,一般使用預設的應該就夠了,不過我喜歡 fancy 的東西,就折騰了一把。涉及的東西可能比較細枝末節,可以直接看 space-vim: syntax-checking 瞭解一下大概的配置 。主要是針對 ale 提供的 statusline 內容進行再提取進行展示。如果沒有語法錯誤就不顯示在 statusline, 如果有 warning 或 error, 則通過不同顏色就行區分。

而關於側邊的 warning 或 error sign, 我喜歡乾淨一點,用前景色彩區分就好,下面這樣有時候會像一塊塊的補丁貼在上面,覺得不太好看。

syntax 增強

vim 內建對於 python 的高亮有點弱,連 self 都不給我亮起來, 這一點可以通過 python-mode/python-mode 來進行增強:

hi pythonSelf            ctermfg=174 guifg=#6094DB cterm=bold gui=bold

具體可以看這裡 space-vim: python layer

在 python-mode 的 syntax/python.vim 裡,可以看到比 vim 內建的 syntax/python.vim 更加細緻的高亮群組,應該不難看懂各項內容,照著顏色表自行修改高亮風格就可以了。這是 terminal 256 色對照表 256 Terminal colors and their 24bit equivalent (or similar), 這是 GUI 顏色對照表 Complete HTML True Color Chart 。

這麼做的優點自然是想要什麼效果完全可自訂,但是也有缺點,因為可能沒辦法適配所有的 vim 主題。當你切換主題時,這些針對 python 自訂的高亮也許會有些不太契合。就算是只算流行的那些 vim 主題,恐怕也有兩位元了,有些是冷色調,有些是暖色調,有些以藍色為主,有些是紅色居多,應該不太容易找一些百搭的配色。不過每個人所中意的主題可能也就是那麼幾個,所以自行選擇吧…..

其實 python-mode 有點集大成的意思,囊括了用 vim 寫 python 的很多功能,有興趣的可以嘗試靠它 “一招打遍天下”。不過,目前我只是中意這一部分而已。

代碼格式化

這一點可以通過 google/yapf 來完成,安裝好 yapf, 像下面這樣 <LocalLeader>= 就能對當前檔案進行格式化:

 autocmd FileType python nnoremap <LocalLeader>= :0,$!yapf<CR>
自動補全

這一點因為我主要還是使用 vim, 因此用的 YouCompleteMe, 實際後端用的是已經提到的 jedi-vim. 如果不喜歡 ycmd, 使用 neovim 的可以嘗試使用 deoplete.nvim .

import 整理

各種 import 是不是顯得有點亂?使用 timothycrosley/isort 整理一下吧:

autocmd FileType python nnoremap <LocalLeader>i :!isort %<CR><CR>
一鍵運行

這個可以通過 skywind3000/asyncrun.vim 來增強, 把之前的 ! 換成 AsyncRun! 就好了. 其實還是有些小小的注意點:

很多人的一鍵運行可能大概長這樣:

...exec "!g++ % -o %<"exec "!time ./%<"...

可以直接把上面的 ! 換成 AsyncRun! 嗎?答案是不可以,如果要達到之前的效果,應該要這樣:

exec "AsyncRun! g++ -stdc++11 % -o %<; time ./%<"

要用分號連結多條命令(linux)或者 & 連結多條命令(windows),具體可以看 這裡。

具體的 vim 配置在這裡: space-vim (覺得不錯的話可以順便到 github 點個 star 支援下哈), 啟用 ycmd, syntax-checking, programming, python Layer 就能達到上面的效果了。

用 Vim 寫 Python 的最佳實務

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.