autopep8与vim

use*_*828 10 python vim pep8

有没有办法自动将autopep8应用于vim中正在编辑的文件?我有以下vimrc.

先感谢您.

Mei*_*ham 18

使用autopep8的正确方法是依赖vim"formatprg"设置.所以你将下面的行添加到vimrc:

au FileType python setlocal formatprg=autopep8\ -
Run Code Online (Sandbox Code Playgroud)

现在当你在python中选择并点击时gq(默认映射除非你重新映射它).它将过滤行autopep8并将格式良好的版本写入到位.

上面的设置也使它适用于vim对象和vim运动,所以你可以重新渲染一个段落(很好的python代码行之间没有空行)使用gqap.

要做你能做的整个文件 gggqG

命令末尾的连字符" - "需要autopep8读取标准中的行.

  • +1:我认为这是vim方式.感谢您指出了这一点.我不赞成在写入时自动将autope8应用于文件.如果你按ZZ,你看不到发生了什么.您可以添加一个git-pre-commit钩子,它在源文件上运行pep8,如果检测到样式违规,则中止提交.[见这里使用uncrustify](https://github.com/githubbrowser/Pre-commit-hooks) (3认同)

PhM*_*hML 6

autopep8包含在python-mode中.

调用:PymodeLintAuto或映射它:

" Automatically fix PEP8 errors in the current buffer:
noremap <F8> :PymodeLintAuto<CR>
Run Code Online (Sandbox Code Playgroud)


Mat*_*dge 4

您应该能够执行类似的操作来通过 autopep8 运行当前文件:

:!autopep8 -i expand("%")
Run Code Online (Sandbox Code Playgroud)

如果您想在写入每个 python 文件时自动执行此操作,您可以将其添加到您的vimrc

if has("autocmd")
    autocmd BufWritePost *.py !autopep8 -i expand("%")
endif
Run Code Online (Sandbox Code Playgroud)