8

Vim 有一些非常有用的文本动作,例如ib, i), i}, 等等来快速选择文本的一部分。但是,我经常需要一个逐行模式的内部块。例如(带有行号):

1:    $foo = array(
2:        'bar' => 'Bar',
3:        'quux' => 'Quux',
4:    );

现在,当我的光标在某处的第 2 行或第 3 行并且我点击viborvi)时,Vim 选择第 2、3 行和第 4 行上的缩进空格。我只想要第 2 行和第 3 行。我已经尝试过VibVi)但它们的作用与用小写字母v

是否有任何简单的文本动作或其他快速方法可以在逐行模式下选择内部块?

4

3 回答 3

4

我可能会为此投反对票,但我只是向上或向下移动我需要的行数,就像V3jV2k只要它是已知的。

我有一个在绝对编号和相对编号 ( ) 之间切换的绑定,:set relativenumber因此只要它们都在屏幕上,就很容易识别。

于 2011-07-19T10:52:40.590 回答
3

我同意拥有您所描述的行为会很好。如果您下定决心,那么您始终可以使用 Kana 的textobj-user框架滚动您自己的自定义文本对象。我用它来创建一个用于处理 ruby​​ 块的文本对象,并发现它非常容易做到。

于 2011-07-19T11:59:11.390 回答
2

最后我找到了一种更简单的方法:vim-indent-object允许我根据缩进级别选择文本区域。考虑到我的源代码总是很好地缩进,这几乎是一回事。

现在,如果我在示例中的第 2 行或第 3 行,我可以简单地按vii选择内部缩进对象,它会选择第 2 行和第 3 行。Groovy!

于 2011-07-21T07:02:46.853 回答