加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在vim中使用pythontidy

发布时间:2020-12-15 21:02:57 所属栏目:安全 来源:网络整理
导读:我现在用的是, autocmd BufWritePost *.py !python PythonTidy.py % % 它真的称为整洁的程序并更改文件,但vim不会重新加载新文件. 而且我不想为它安装另一个插件. ======================= 注意:我发现这个功能很危险,如果命令faild,PythonTidy将输出一个空
我现在用的是,

autocmd BufWritePost *.py !python PythonTidy.py % %

它真的称为整洁的程序并更改文件,但vim不会重新加载新文件.

而且我不想为它安装另一个插件.

=======================
注意:我发现这个功能很危险,如果命令faild,PythonTidy将输出一个空文件,这意味着如果你有语法错误,你将丢失你的文件,除非按“u”得到??它,但你无法保存在修复语法错误之前.

我打电话给:!PythonTidy%%在pylint完成后立即手动完成.

解决方法

使用BufWritePre代替BufWritePost,并将Vim范围过滤与PythonTidy的stdin / stdout模式结合使用.

autocmd FileType python autocmd BufWritePre <buffer> let s:saveview = winsaveview() | exe '%!python PythonTidy.py' | call winrestview(s:saveview) | unlet s:saveview

(使用autocmd FileType python autocmd BufWritePre< buffer>使得这比在glob模式上匹配更准确:它意味着“任何时候检测到Python文件,为该缓冲区安装此autocmd” – 所以它独立于文件名.)

遗憾的是,如果撤消过滤,则无法保留光标位置. (您正在过滤整个文件范围;撤消过滤操作时,光标会跳转到范围中的第一行;因此您最终会在文件的顶部.)我希望找到一种方法来创建一个no -op撤消状态,之前,所以你可以打两次你回到正确的地方,但我还不能做到这一点.也许别人知道怎么做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读