搜尋
首頁後端開發Python教學用 Vim 寫 Python 的最佳實踐

用 Vim 寫 Python 的最佳實踐

Feb 09, 2017 am 10:56 AM
pythonvim

先來曬個圖:

用 Vim 写 Python 的最佳实践

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

語法檢查

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

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

用 Vim 写 Python 的最佳实践

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

用 Vim 写 Python 的最佳实践

用 Vim 写 Python 的最佳实践

syntax 增強

vim 自帶對於python 的高亮有點弱,連self 都不給我亮起來, 這一點可以透過python-mode/python-mode 來增強具體可以看​​這裡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, 像下面這樣

=

就能對當前文件進行格式化:<pre class="brush:php;toolbar:false">    hi pythonSelf            ctermfg=174 guifg=#6094DB cterm=bold gui=bold</pre>自動補全

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

import 整理

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

autocmd FileType python nnoremap <localleader>= :0,$!yapf<cr></cr></localleader>

一鍵運行

這個可以透過skywind3000/asyncrun.vim 來增強, 把之前的

!

換成AsyncRun! 就好了點:很多人的一鍵運行可能大概長這樣:

autocmd FileType python nnoremap <localleader>i :!isort %<cr><cr></cr></cr></localleader>

可以直接把上面的

!

換成AsyncRun! 嗎?答案是不可以,如果要達到之前的效果,應該要這樣:<pre class="brush:php;toolbar:false">... exec &quot;!g++ % -o %</pre>要用分號鏈接多條命令(linux)或者 & 鏈接多條命令(windows),具體可以看​​ 這裡。

具體完整的 vim 配置在這裡: >>> space-vim (覺得寫得不錯的話可以順便到 github 點個 star

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使用numpy創建多維數組?如何使用numpy創建多維數組?Apr 29, 2025 am 12:27 AM

使用NumPy創建多維數組可以通過以下步驟實現:1)使用numpy.array()函數創建數組,例如np.array([[1,2,3],[4,5,6]])創建2D數組;2)使用np.zeros(),np.ones(),np.random.random()等函數創建特定值填充的數組;3)理解數組的shape和size屬性,確保子數組長度一致,避免錯誤;4)使用np.reshape()函數改變數組形狀;5)注意內存使用,確保代碼清晰高效。

說明Numpy陣列中'廣播”的概念。說明Numpy陣列中'廣播”的概念。Apr 29, 2025 am 12:23 AM

播放innumpyisamethodtoperformoperationsonArraySofDifferentsHapesbyAutapityallate AligningThem.itSimplifififiesCode,增強可讀性,和Boostsperformance.Shere'shore'showitworks:1)較小的ArraySaraySaraysAraySaraySaraySaraySarePaddedDedWiteWithOnestOmatchDimentions.2)

說明如何在列表,Array.Array和用於數據存儲的Numpy數組之間進行選擇。說明如何在列表,Array.Array和用於數據存儲的Numpy數組之間進行選擇。Apr 29, 2025 am 12:20 AM

forpythondataTastorage,choselistsforflexibilityWithMixedDatatypes,array.ArrayFormeMory-effficityHomogeneousnumericalData,andnumpyArraysForAdvancedNumericalComputing.listsareversareversareversareversArversatilebutlessEbutlesseftlesseftlesseftlessforefforefforefforefforefforefforefforefforefforlargenumerdataSets; arrayoffray.array.array.array.array.array.ersersamiddreddregro

舉一個場景的示例,其中使用Python列表比使用數組更合適。舉一個場景的示例,其中使用Python列表比使用數組更合適。Apr 29, 2025 am 12:17 AM

Pythonlistsarebetterthanarraysformanagingdiversedatatypes.1)Listscanholdelementsofdifferenttypes,2)theyaredynamic,allowingeasyadditionsandremovals,3)theyofferintuitiveoperationslikeslicing,but4)theyarelessmemory-efficientandslowerforlargedatasets.

您如何在Python數組中訪問元素?您如何在Python數組中訪問元素?Apr 29, 2025 am 12:11 AM

toAccesselementsInapyThonArray,useIndIndexing:my_array [2] accessEsthethEthErlement,returning.3.pythonosezero opitedEndexing.1)usepositiveandnegativeIndexing:my_list [0] fortefirstElment,fortefirstelement,my_list,my_list [-1] fornelast.2] forselast.2)

Python中有可能理解嗎?如果是,為什麼以及如果不是為什麼?Python中有可能理解嗎?如果是,為什麼以及如果不是為什麼?Apr 28, 2025 pm 04:34 PM

文章討論了由於語法歧義而導致的Python中元組理解的不可能。建議使用tuple()與發電機表達式使用tuple()有效地創建元組。 (159個字符)

Python中的模塊和包裝是什麼?Python中的模塊和包裝是什麼?Apr 28, 2025 pm 04:33 PM

本文解釋了Python中的模塊和包裝,它們的差異和用法。模塊是單個文件,而軟件包是帶有__init__.py文件的目錄,在層次上組織相關模塊。

Python中的Docstring是什麼?Python中的Docstring是什麼?Apr 28, 2025 pm 04:30 PM

文章討論了Python中的Docstrings,其用法和收益。主要問題:Docstrings對於代碼文檔和可訪問性的重要性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具