我可以使用vi{
和va{
来选择C ++代码块。当我需要猛拉/删除它时,它对我有很大的帮助。
但是Python使用缩进来表示代码块。我找不到更好的方法。有什么想法吗?
答案 0 :(得分:24)
我还没有太多机会使用它,但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行(在可视模式下,多次使用缩进对象会将选择范围扩展到上一个/下一个级别)。 / p>
它定义的文本对象是:
ai
:当前缩进级别加上上面的行
当您想要获取介绍性行时有用(例如抓住if
及其“然后”块)ii
:当前缩进级别aI
:当前缩进级别加上上面的一行和下面的一行
对于使用“结束”语句的语言非常有用:if
/ endif
)。iI
:当前缩进级别(实际上,ii
和iI
相同)对象也可以与期望文本对象的其他命令一起使用(即cii
删除当前缩进级别并开始插入其替换)。
答案 1 :(得分:6)
我只是按v
获取视觉模式,然后(
或)
。这将带您进入下一个空白行。如果您正好格式化,那应该对应于您的代码块。
答案 2 :(得分:1)
您可以显示行(:set nu),然后转到代码块开始的行(:lineNumber)并将它们拉出来。
答案 3 :(得分:0)
对于python,我通常使用" zM"折叠整个文件,然后" 2yy"拉动整个功能。
如果你的功能在某个班级内,你可以使用" zc"而不是" zM"
您需要在〜/ .vimrc中添加以下行以使zM / zc正常工作:
autocmd FileType python set foldmethod=indent