重新格式化Python文件以具有4个空格缩进

hal*_*ull 22 python vim

我正在编辑一个Python文件,它使用两个空格进行编程缩进 - 我更喜欢4个空格.在我的.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
Run Code Online (Sandbox Code Playgroud)

如何让Vim将所有现有的2个空格缩进转换为4个空格缩进?

换一种说法:

if something:
  dothis()
Run Code Online (Sandbox Code Playgroud)

if something:
    dothis()
Run Code Online (Sandbox Code Playgroud)

当我尝试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
Run Code Online (Sandbox Code Playgroud)

成为

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

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

            return results
Run Code Online (Sandbox Code Playgroud)

Ben*_*oit 50

为了使每行开头的空格数加倍(并且仅在开头):

:%s/^\s*/&&/g
Run Code Online (Sandbox Code Playgroud)

& 在替换模式中是匹配模式.

可能它对您没有任何副作用.

  • 谢谢!我一生都在寻找这个(好吧,也许就是过去5年左右)! (2认同)

Ezr*_*zra 18

按下gg=G是重新缩进文件中所有内容的命令.如果你有其他可以重新缩进的元素,vim也会缩进这些元素,这并不能总是产生预期的效果.如果丑陋,你必须手动清理它们.

或者,您可以使用该>命令缩进,并使用范围手动有效地浏览文件. 99>k例如,将光标下方的99行缩进一级.


Pie*_*erz 5

当前重新格式化 Python、解决许多其他问题并使其兼容 PEP8 的最佳方法是使用autopep8。请参阅此相关问题pip install autopep8因此,在 vim 中安装 autopep8 (例如)后,您可以执行以下操作:

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

还有一个vim-autopep8插件可以让事情变得更加简单。