用 Vim 寫 Python 的最佳實(shí)踐

先來曬個(gè)圖:

screenshot

對(duì)于一些 Python 的小項(xiàng)目,使用 vim 是一個(gè)不錯(cuò)的選擇。本文內(nèi)容整理自我在知乎的回答 用 用 Vim 寫 Python 的最佳實(shí)踐是什么?炎功,下面的內(nèi)容是對(duì)知乎舊有回答的一個(gè)補(bǔ)充,尤其有一些主要針對(duì) vim8. 如果想要更多內(nèi)容缓溅,可以查看知乎對(duì)于該問題的其他一些回答蛇损。

語法檢查

如果用 vim8, 那么可以用異步檢測(cè)的 w0rp/ale 代替 syntastic 了,再也不用羨慕 flycheck, 也不用因?yàn)檎Z法檢查而卡頓了坛怪。

關(guān)于 ale 這部分的個(gè)性化配置淤齐,其實(shí)有點(diǎn) “吹毛求疵”,一般使用默認(rèn)的應(yīng)該就夠了酝陈,不過我喜歡 fancy 的東西床玻,就折騰了一把。涉及的東西可能比較細(xì)枝末節(jié)沉帮,可以直接看 space-vim: syntax-checking 了解一下大概的配置 锈死。主要是針對(duì) ale 提供的 statusline 內(nèi)容進(jìn)行再提取進(jìn)行展示。如果沒有語法錯(cuò)誤就不顯示在 statusline, 如果有 warning 或 error, 則通過不同顏色就行區(qū)分穆壕。

ale statusline

而關(guān)于側(cè)邊的 warning 或 error sign, 我喜歡干凈一點(diǎn)待牵,用前景色區(qū)分就好,下面這樣有時(shí)候會(huì)像一塊塊的補(bǔ)丁貼在上面喇勋,覺得不太好看缨该。

error/warning sign
error/warning sign

syntax 增強(qiáng)

vim 自帶對(duì)于 python 的高亮有點(diǎn)弱,連 self 都不給我亮起來, 這一點(diǎn)可以通過 python-mode/python-mode 來進(jìn)行增強(qiáng):

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

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

在 python-mode 的 syntax/python.vim 里川背,可以看到比 vim 自帶的 syntax/python.vim 更加細(xì)致的高亮群組贰拿,應(yīng)該不難看懂各項(xiàng)內(nèi)容,照著顏色表自行修改高亮風(fēng)格就可以了熄云。這是 terminal 256 色對(duì)照表 256 Terminal colors and their 24bit equivalent (or similar)膨更, 這是 GUI 顏色對(duì)照表 Complete HTML True Color Chart

這么做的優(yōu)點(diǎn)自然是想要什么效果完全可自定義缴允,但是也有缺點(diǎn)荚守,因?yàn)榭赡軟]辦法適配所有的 vim 主題。當(dāng)你切換主題時(shí)练般,這些針對(duì) python 自定義的高亮也許會(huì)有些不太契合矗漾。就算是只算流行的那些 vim 主題,恐怕也有兩位數(shù)了薄料,有些是冷色調(diào)敞贡,有些是暖色調(diào),有些以藍(lán)色為主摄职,有些是紅色居多嫡锌,應(yīng)該不太容易找一些百搭的配色虑稼。不過每個(gè)人所中意的主題可能也就是那么幾個(gè)琳钉,所以自行選擇吧.....

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

代碼格式化

這一點(diǎn)可以通過 google/yapf 來完成及皂,安裝好 yapf, 像下面這樣 <LocalLeader>= 就能對(duì)當(dāng)前文件進(jìn)行格式化:

 autocmd FileType python nnoremap <LocalLeader>= :0,$!yapf<CR>

自動(dòng)補(bǔ)全

這一點(diǎn)因?yàn)槲抑饕€是使用 vim甫男, 因此用的 YouCompleteMe, 實(shí)際后端用的是已經(jīng)提到的 jedi-vim. 如果不喜歡 ycmd, 使用 neovim 的可以嘗試使用 deoplete.nvim .

import 整理

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

autocmd FileType python nnoremap <LocalLeader>i :!isort %<CR><CR>

一鍵運(yùn)行

這個(gè)可以通過 skywind3000/asyncrun.vim 來增強(qiáng)验烧, 把之前的 ! 換成 AsyncRun! 就好了. 其實(shí)還是有些小小的注意點(diǎn):

很多人的一鍵運(yùn)行可能大概長(zhǎng)這樣:

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

可以直接把上面的 ! 換成 AsyncRun! 嗎板驳?答案是不可以,如果要達(dá)到之前的效果碍拆,應(yīng)該要這樣:

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

要用分號(hào)鏈接多條命令(linux)或者 & 鏈接多條命令(windows)若治,具體可以看 這里

具體的 vim 配置在這里: space-vim (覺得寫的不錯(cuò)的話可以順便到 github 點(diǎn)個(gè) star 支持下哈), 啟用 ycmd, syntax-checking, programming, python Layer 就能達(dá)到上面的效果了感混。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末端幼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子弧满,更是在濱河造成了極大的恐慌婆跑,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庭呜,死亡現(xiàn)場(chǎng)離奇詭異滑进,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)募谎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門扶关,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人近哟,你說我怎么就攤上這事驮审。” “怎么了吉执?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵疯淫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我戳玫,道長(zhǎng)熙掺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任咕宿,我火速辦了婚禮币绩,結(jié)果婚禮上蜡秽,老公的妹妹穿的比我還像新娘。我一直安慰自己缆镣,他們只是感情好芽突,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著董瞻,像睡著了一般寞蚌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钠糊,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天挟秤,我揣著相機(jī)與錄音,去河邊找鬼抄伍。 笑死艘刚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的截珍。 我是一名探鬼主播攀甚,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼笛臣!你這毒婦竟也來了云稚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤沈堡,失蹤者是張志新(化名)和其女友劉穎静陈,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诞丽,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲸拥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了僧免。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刑赶。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖懂衩,靈堂內(nèi)的尸體忽然破棺而出撞叨,到底是詐尸還是另有隱情,我是刑警寧澤浊洞,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布牵敷,位于F島的核電站,受9級(jí)特大地震影響法希,放射性物質(zhì)發(fā)生泄漏枷餐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一苫亦、第九天 我趴在偏房一處隱蔽的房頂上張望毛肋。 院中可真熱鬧怨咪,春花似錦、人聲如沸润匙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趁桃。三九已至辽话,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卫病,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工典徘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蟀苛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓逮诲,卻偏偏與公主長(zhǎng)得像帜平,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子梅鹦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容