资讯专栏INFORMATION COLUMN

用 Vim 写 Python 的最佳实践

TANKING / 1544人阅读

摘要:本文内容整理自我在知乎的回答用写的最佳实践是什么,下面的内容是对知乎旧有回答的一个补充,尤其有一些主要针对如果想要更多内容,可以查看知乎对于该问题的一些回答。主要是针对提供的内容进行再提取进行展示。

先来晒个图:

对于一些 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, 像下面这样 = 就能对当前文件进行格式化:

autocmd FileType python nnoremap = :0,$!yapf
自动补全

这一点因为我主要还是使用 vim, 因此用的 YouCompleteMe, 实际后端用的是已经提到的 jedi-vim. 如果不喜欢 ycmd, 使用 neovim 的可以尝试使用 deoplete.nvim .

import 整理

各种 import 是不是显得有点乱?使用 timothycrosley/isort 整理一下吧:

autocmd FileType python nnoremap i :!isort %
一键运行

这个可以通过 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 就能达到上面的效果了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38389.html

相关文章

  • Vim Python 最佳实践

    摘要:本文内容整理自我在知乎的回答用写的最佳实践是什么,下面的内容是对知乎旧有回答的一个补充,尤其有一些主要针对如果想要更多内容,可以查看知乎对于该问题的一些回答。主要是针对提供的内容进行再提取进行展示。 先来晒个图: showImg(https://segmentfault.com/img/bVIDeB?w=1434&h=1430); 对于一些 Python 的小项目,使用 vim 是一个...

    cloud 评论0 收藏0
  • PHP最佳实践之上线准备

    摘要:简单来说,就是我们创建一对密钥,其中一个是私钥保存在本地设备中,另一个是公钥,传到你的中,之所以叫做密钥对,是因为使用公钥加密的消息只能使用对应的私钥解密。 配置 1).如果你使用的不是Pass,那么先配置VPS或者专用的服务器才能运行PHP应用。本文假设你会使用vim或者nano编辑器。2).我们选择nginx服务器来作为我们的web服务器。 首次登录 ssh root@123.45...

    sumory 评论0 收藏0
  • PyODPS开发中最佳实践

    摘要:摘要支持用来对对象进行操作,它提供了来用类似的接口进行大规模数据分析以及预处理,并且可以用模块来执行机器学习算法。现在为了让大家能更好地使用,我们总结开发过程中的最佳实践,来让大家更高效地开发程序。 摘要: PyODPS支持用 Python 来对 MaxCompute 对象进行操作,它提供了 DataFrame API 来用类似 pandas 的接口进行大规模数据分析以及预处理,并且可...

    hellowoody 评论0 收藏0
  • Flask Web 测试驱动开发最佳实践 之 开篇

    摘要:测试驱动开发简称,是一种软件开发过程中的应用方法,,由极限编程中倡导,以其倡导先写测试程序,然后编码实现其功能得名。测试驱动着整个开发过程首先,驱动代码的设计和功能的实现其后,驱动代码的再设计和重构。 showImg(https://segmentfault.com/img/remote/1460000017081716); 前言 一直都有听到 TDD 测试驱动开发的开发方式,之前看...

    fnngj 评论0 收藏0
  • Docker容器学习笔记1

    摘要:查看,则可以看到成功了一个执行命令则可以查看镜像的层级执行命令镜像标签名则可以生成一个运行程序。 Docker容器 概述 1、之前项目的部署方式的缺点 通过物理机方式部署,如图所示 showImg(https://segmentfault.com/img/bVbfn8z?w=1366&h=668); 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 2、虚拟化...

    mingde 评论0 收藏0

发表评论

0条评论

TANKING

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<