如何使用Vim选择Python代码块?
我可以用 vi{
和 va{
来选择 C++ 的代码块。这对我很有帮助,特别是在我需要复制或删除这些代码块的时候。
但是 Python 是通过缩进来表示代码块的。我找不到更好的方法来处理这个。有没有什么建议?
4 个回答
4
对于Python,我通常使用“zM”来折叠整个文件,然后用“2yy”来复制整个函数。
如果你的函数是在某个类里面,你可以用“zc”来代替“zM”。
你需要在~/.vimrc文件中添加以下一行,才能让zM/zc正常工作:
autocmd FileType python set foldmethod=indent
8
我只需按一下 v
进入可视模式,然后按 (
或 )
。这样就会跳到下一个空行。如果你的代码格式整理得不错,这个空行应该对应着你的代码块。
31
我还没太多机会使用这个,但Michael Smith的vim-indent-object听起来可能正是你想要的东西。
下面是一些使用示例(行号显示为开启了set number
的情况):
1 This is
2 some text
3 with multiple
4 levels of
5 indentation.
6 There is also
7 another stanza.
当光标在第2、4或5行时,输入Vii
可以选择第2到第5行。
当光标在第3行时,输入Vai
可以选择第2到第3行。
当光标在第3行时,输入Vaiii
(或者Viiii
),可以选择第2到第5行(在可视模式下,多次使用缩进对象会将选择扩展到更高的层级)。
它定义的文本对象有:
ai
:当前缩进级别加上一行上面的行
当你想要抓取引导行时很有用(例如,抓取if
及其“then”块)。ii
:当前缩进级别。aI
:当前缩进级别加上一行上面和一行下面的行
对于使用“end”语句的语言很有用:if
/endif
)。iI
:当前缩进级别(实际上,ii
和iI
是一样的)。
这些对象也可以和其他需要文本对象的命令一起使用(比如cii
可以删除当前缩进级别并开始插入替代内容)。