在vim中使用autopep8

15 投票
4 回答
14767 浏览
提问于 2025-04-17 18:21

有没有办法在用vim编辑文件的时候,自动应用autopep8?我有一个这样的vimrc

提前谢谢你。

4 个回答

4

你可以这样做,把当前文件通过autopep8处理一下:

:!autopep8 -i expand("%")

如果你想在每次保存Python文件时自动进行这个处理,可以把下面的内容添加到你的vimrc文件里:

if has("autocmd")
    autocmd BufWritePost *.py !autopep8 -i expand("%")
endif
8

autopep8 是包含在 python-mode 这个插件里的。

你可以通过调用 :PymodeLintAuto 来使用它,或者给它设置一个快捷键:

" Automatically fix PEP8 errors in the current buffer:
noremap <F8> :PymodeLintAuto<CR>
27

使用autopep8的正确方法是依赖vim的“formatprg”设置。所以你需要在vimrc文件中添加下面这一行:

au FileType python setlocal formatprg=autopep8\ -

现在,当你在Python代码中选择几行,然后按下gq(这是默认的快捷键,除非你自己改了)。这样就会通过autopep8处理这些行,并把格式化好的代码直接写回去。

上面的设置还可以和vim中的对象和动作一起使用,所以你可以用gqap来重新格式化一段代码(就是没有空行的Python代码行)。

如果想要格式化整个文件,可以使用gggqG

命令末尾的短横线'-'是必须的,这样才能让autopep8从标准输入读取代码行。

撰写回答