有没有办法在vim中使用==来重新缩进Python代码?

4 投票
2 回答
623 浏览
提问于 2025-04-17 07:44

假设我有以下的Python代码:

if conditionOne():
    if conditionTwo():
        foo = bar
        foo += 1
        bar -= 2

如果我后来删除了conditionTwo,我想把这三行代码的缩进减少,让它和我其他的代码看起来一致。通常我会用=%(因为我主要用C++),但在这里不行,所以我试着在这块的第一行用3==。结果变成了这样:

if conditionOne():
    foo = bar
        foo += 1
        bar -= 2

这不是我想要的结果。我本可以用3<<,这样效果会更好,但我平时不太用这个命令。我不想为了Python而记住一些特别的缩进命令。按照不要让我思考的原则,有没有办法让=的过滤器在Python代码中按我期待的方式工作呢?

2 个回答

0

如果你使用了 vim-indent-object 这个插件,你可以通过以下方式来删除一行代码并缩进代码块:

  • 当光标在条件语句上时,输入 <iidd
  • 当光标在代码块的任何位置时,输入 <aidd

考虑到这一点,你可以试试输入 :nmap =% <ii:nmap == <ai,这样就可以根据需要删除条件语句。这虽然不是完美的解决方案,但我觉得这是一个不错的替代办法。

3

在C或C++语言中,代码的缩进不会影响程序的运行效果,但在Python中,缩进是非常重要的,因为它关系到程序的控制流程。

所以在Python中,如果代码的缩进不同,程序的行为也会不同。而对于编辑器来说,它无法判断开发者是否想要在某一行进行缩进(比如在一个内部作用域中)。

因此,编辑器的自动缩进功能主要是为C类语言设计的,而不适用于Python。

撰写回答