(Vim)在Python模式下更改缩进设置

(Vim)在Python模式下更改缩进设置,vim,vim-plugin,python-mode,Vim,Vim Plugin,Python Mode,我刚刚安装了python模式,它有很多很酷的特性,比如“语法检查” 我希望python代码有2个空格的缩进,但是语法检查警告我应该是4个空格 我相信我应该有一个变量来设定这个偏好。我已经阅读了pymode的文档,找不到相关的设置 (另外,我还想更改pymode设置的shiftwidth设置)最好的方法是在.vim/ftplugin/python.vim中创建一个文件,并将其放入: setlocal smarttab setlocal expandtab setlocal shiftwidth=2

我刚刚安装了python模式,它有很多很酷的特性,比如“语法检查”

我希望python代码有2个空格的缩进,但是语法检查警告我应该是4个空格

我相信我应该有一个变量来设定这个偏好。我已经阅读了pymode的文档,找不到相关的设置


(另外,我还想更改pymode设置的shiftwidth设置)

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

setlocal smarttab
setlocal expandtab
setlocal shiftwidth=2
setlocal tabstop=2
setlocal softtabstop=2
这将适用于所有Python文件。另一种方法是modeline:将其放在所有Python文件的顶部或底部,以仅影响这些文件:

# vim: sta:et:sw=2:ts=2:sts=2
这需要打开modeline支持,这可能需要在
.vimrc
中设置modeline


但正如rednaw所说,这并不是一个好主意,如果你这样做的话,最好只对你制作的文件进行处理,而不是对所有Python文件进行处理(也就是说,将其他人编写的文件保留为标准格式),因此如果你真的需要的话,我推荐第二种方法。

你可以有多个lint。将此添加到您的
~/.vimrc
中,只保留您想要的跳棋

让g:pymode\u lint\u checkers=['mccabe','pyflakes','pylint','pep8','pep257']
在此处尝试使用两行缩进代码,仅显示与缩进相关的消息:

  • [pep8]E111压痕不是四的倍数
  • [pylint]W0311压痕不良。找到{}个空间,应为4个
通过更改相同的文件,可以轻松删除这些文件:

让g:pymode\u lint\u ignore='E111,W0311'
以及其他信息,如果您需要。您还可以选择使用较少的检查程序,而不是创建消息代码黑名单


嗯,风格不应该用讨厌的跳棋严格标准化。我不使用pylint、pep8和pep257,这样的配置不需要
pymode\u lint\u ignore
,因为它只适用于pylint和pep8。

你知道pep8推荐吗?@rednaw是的,但我喜欢2个空格。@rednaw-Hmm快速反思一下,也许我应该坚持这个标准。谷歌编码标准使用2个空格作为缩进-在Python和其他语言中。它们还具有肛门保留功能,最大行长约80个字符。你最好遵循PEP8,除非你正在使用谷歌代码。谢谢。如果我想在文件启动时运行“let g:pymode_lint=0”,该怎么办?在modeline中不能这样做,也就是说,不能对每个文件都这样做。但是,如果您想全局禁用Python lint,只需将其粘贴到
.vimrc
。啊,好的。如果你真的需要,有一个插件可以做到这一点:。PEP8不能被视为法律或“好主意的唯一来源”。代码应该遵循上下文默认值以保持一致性(如果有的话),这也是用PEP8编写的。有些PEP8默认值甚至在Python标准库本身中都无效,例如TestCase.assertEquals对方法使用lowerCamelCase,而不是TestCase.assert\u equals。甚至一致性在某种意义上也是“相对的”,这可能是由于XUnit的标准化。