我现在用的是,
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撤消状态,之前,所以你可以打两次你回到正确的地方,但我还不能做到这一点.也许别人知道怎么做.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。