Python 带vim的autopep8

Python 带vim的autopep8,python,vim,pep8,Python,Vim,Pep8,有没有一种方法可以自动应用到vim中正在编辑的文件?我有以下几点 提前感谢您。您应该能够执行以下操作,通过Autoep8运行当前文件: :!autopep8 -i expand("%") 如果希望在写入每个python文件时自动执行此操作,可以将其添加到vimrc: if has("autocmd") autocmd BufWritePost *.py !autopep8 -i expand("%") endif AutoEP8包含在中 调用:PymodeLintAuto或映射它:

有没有一种方法可以自动应用到vim中正在编辑的文件?我有以下几点


提前感谢您。

您应该能够执行以下操作,通过Autoep8运行当前文件:

:!autopep8 -i expand("%")
如果希望在写入每个python文件时自动执行此操作,可以将其添加到
vimrc

if has("autocmd")
    autocmd BufWritePost *.py !autopep8 -i expand("%")
endif
AutoEP8包含在中

调用:PymodeLintAuto或映射它:

" Automatically fix PEP8 errors in the current buffer:
noremap <F8> :PymodeLintAuto<CR>
“自动修复当前缓冲区中的PEP8错误:
noremap:PymodeLintAuto

使用autopep8的正确方法是依赖vim“formatprg”设置。因此,您将下面的行添加到vimrc中:

au FileType python setlocal formatprg=autopep8\ -
现在,当您在python中选择行并点击
gq
(默认映射,除非您重新映射它)。它将通过
autopep8
过滤行,并在适当的位置写入格式良好的版本

上面的设置还使它能够处理vim对象和vim运动,因此您可以使用
gqap
重新输入一段(python代码行之间没有空行)

要完成整个文件,您可以执行
gggqG


命令末尾的连字符“-”需要使AutoEP8读取中标准的行。

提交问题时插件还不存在,但现在有了vim-AutoEP8


我不明白你的问题。你想安装AutoEP8?将python规则应用于vimrc文件?我会使用“easy_install-ZU AutoEP8 pep8”安装它“。然而,我更希望我能在Vim中按:w,autopep8将解决所有问题,或者可能在QuickFix窗口中选择一个问题,并仅针对该问题启动autopep8。”test.py“12L,106C编写;:!我展开(“test.py”),然后得到E855自动命令,导致命令中止。为什么?+ 1:我认为这是VIM方式。谢谢你指出这一点。我不赞成自动将autope8应用于写文件。如果你按ZZ,你看不到发生了什么。您可以添加一个git pre-commit钩子,该钩子在源文件上运行pep8,如果检测到样式冲突,则中止提交。这个解决方案的问题是,您不能使用标准formatprg来实现自动跨行拆分长注释字符串之类的功能。有没有办法仍然访问此功能?实际上,我刚刚发现,我仍然可以使用gw命令使用内置的。我可以将其映射为使用
gqq
运行吗?我看到
formatprg
带有一个像
autopep8
这样的外部命令,但不确定它将如何与
一起工作:PymodeLintAuto