(Vim)更改Python-mode中的缩进设置

9
我刚刚安装了 python-mode,它有许多很棒的功能,比如“语法检查”。
我喜欢我的 Python 代码缩进两个空格,但是语法检查警告我应该使用四个空格。
我认为应该有一个变量可以设置这个偏好。我已经阅读了 pymode 的文档,但找不到相关的设置。
(此外,我还想更改由 pymode 设置的 shiftwidth 设置)

你知道 PEP 8 推荐使用 4 个空格缩进 吗? - gitaarik
3
@rednaw,是的,但我喜欢两个空格.. - songyy
1
@rednaw 嗯,我应该坚持使用标准的想法。 - songyy
Google的编码标准在Python和其他语言中使用2个空格进行缩进。他们还非常注重每行最多80个字符的长度限制。除非你正在处理Google代码,否则最好遵循PEP 8。 - Jonathan Leffler
2个回答

3
您可以有多个lints。将其添加到您的~/.vimrc中,只保留您想要的检查器。
let g:pymode_lint_checkers = ['mccabe', 'pyflakes', 'pylint', 'pep8', 'pep257']

尝试使用缩进的两行代码,与缩进相关的唯一消息是:

  • [pep8] E111 缩进不是4的倍数
  • [pylint] W0311 缩进错误。发现{}个空格,期望为4

可以通过更改同一文件轻松删除这些消息:

let g:pymode_lint_ignore = 'E111,W0311'

除了其他消息外,如果需要,您还可以选择使用较少的检查器而不是创建消息代码黑名单。

在我看来,样式不应该被严格规范化和繁琐的检查器所束缚。我不使用pylint、pep8或pep257,这样的配置不需要一个“pymode_lint_ignore”,因为它只针对pylint和pep8。


3

最好的方法是在.vim/ftplugin/python.vim中创建一个文件,并将以下内容放入其中:

setlocal smarttab
setlocal expandtab
setlocal shiftwidth=2
setlocal tabstop=2
setlocal softtabstop=2

这将适用于您所有的Python文件。另一种方法是使用模型行:将其放置在所有Python文件的顶部或底部,以仅影响那些文件:

# vim: sta:et:sw=2:ts=2:sts=2

这需要您打开modeline支持,这可能需要您在.vimrc中添加set modeline

但正如rednaw所说,这并不是一个好主意,如果您确实要这样做,最好只对您自己创建的文件进行操作,而不是所有Python文件(即保留其他人编写的文件的标准格式),因此如果您真的需要这样做,我建议使用第二种方法。

谢谢。如果我想在文件启动时运行“let g:pymode_lint = 0”,该怎么做? - songyy
您不能在 modeline 中这样做 - 也就是说,您无法按文件执行此操作。但是,如果您想要全局禁用 Python Lint,请将其添加到您的.vimrc中即可。 - Amadan
1
好的,如果你真的需要的话,有一个插件可以实现这个功能:let-modeline.vim - Amadan
PEP8不应被视为法律或“唯一的好主意来源”。代码应遵循上下文默认值以保持一致性,如果有的话,这也是PEP8中写明的。 - H.D.
一些PEP8的默认设置甚至在Python标准库中也不是有效的,例如TestCase.assertEquals使用lowerCamelCase而不是TestCase.assert_equals。即使一致性在某种程度上是“相对”的,这也可能是由于XUnit标准化而做出的决定。 - H.D.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接