有没有办法让==在vim中工作以重新启动python代码?

时间:2011-12-05 16:38:23

标签: python vim indentation

我们说我有以下Python代码:

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

如果我稍后删除conditionTwo,我想要删除块的三行,以便它看起来与我的所有其他代码一致。通常情况下,我只需要=%(我的主要语言是C ++),但这不会在这里工作,所以我在块的第一行尝试了3==。这导致了这个:

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

那不是我想要的。我本可以使用3<<并获得更好的结果,但这不是我通常使用的命令。我宁愿不必为Python记住特殊的缩进命令。本着Don't Make Me Think的精神,有没有办法让=过滤器与我期望的Python代码一起使用?

2 个答案:

答案 0 :(得分:3)

在C或C ++中,缩进程序不会影响其行为,而在Python中它确实可以,因为缩进是流控制的一部分。

因此在Python中,具有不同缩进的程序将具有不同的行为,对于编辑器,无法猜测开发人员是否想要缩进行(在内部作用域中)。

因此,编辑器的自动缩进功能旨在使用类似C语言,而不是Python。

答案 1 :(得分:0)

如果你使用vim-indent-object插件,你可以执行以下操作来删除该行并使用该块:

  • 将光标放在条件:<iidd
  • 将光标放在块中的任意位置:<aidd

考虑到这一点,也许您可​​以:nmap =% <ii:nmap == <ai并根据需要删除条件。这不是一个完美的解决方案,但它似乎是一个不错的选择。