有没有办法在vim中使用==来重新缩进Python代码?
假设我有以下的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。