将Python文件重新格式化为4个空格缩进

23 投票
7 回答
24891 浏览
提问于 2025-04-16 13:08

我正在编辑一个Python文件,这个文件使用两个空格来进行代码缩进,而我更喜欢用四个空格。在我的.vimrc文件里,有一些和缩进相关的设置:

set tabstop=4                     "Indentation levels every four columns
set expandtab                     "Convert all tabs typed to spaces
set shiftwidth=4                  "Indent/outdent by four columns
set softtabstop=4

我该怎么做才能让Vim把所有现有的两个空格缩进转换成四个空格缩进呢?

换句话说:

if something:
  dothis()

要变成

if something:
    dothis()

当我尝试使用gg=G时

def check():
  for a in list:
    for  b in list2:
      check(a, b)
      while (len > MAX) :
        poll()

  while(len(thelist) > 0) :
    poll()  

  return results

变成了

def check():
    for a in list:
    for  b in list2:
    check(a, b)
    while (len > MAX) : 
        poll()

        while(len(thelist) > 0) :
            poll()

            return results

7 个回答

5

现在最好的方法来重新格式化Python代码,解决很多其他问题,并确保它符合PEP8标准,就是使用autopep8这个工具。你可以查看这个相关问题。在你安装了autopep8之后(比如用命令pip install autopep8),在vim中你可以这样操作:

:%! autopep8 -

另外,还有一个vim-autopep8插件,可以让这个过程变得更简单。

18

按下 gg=G 这个命令可以重新调整文件中所有内容的缩进。如果文件里有其他可以调整缩进的元素,vim 也会一起调整它们的缩进,但这样不一定能达到你想要的效果。如果调整后看起来不太好,你就得手动去修整一下。

另外,你也可以使用 > 命令来调整缩进,这样可以更高效地手动处理文件中的某些部分。比如,输入 99>k 就会把光标下面的99行向右缩进一个级别。

49

为了在每一行的开头增加两倍的空格(只在开头增加):

:%s/^\s*/&&/g

& 在替换的模式中代表的是你匹配到的内容。

这可能对你没有任何副作用。

撰写回答