如何在Vim中快速选择(内部)行

时间:2011-07-19 10:17:32

标签: vim editor keyboard-shortcuts indentation keymapping

Vim有一些非常有用的文本动作,例如 i b i i } ,等等,快速选择一部分文字。但是,我经常需要在线方式模式下使用内部块。例如(带行号):

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

现在,当我的光标位于第2行或第3行某处时,我点击 v i b v i ,Vim选择第2行和第4行的缩进空格。我只想要第2行和第3行。我试过 V i b V i 但它们与小写 v

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

3 个答案:

答案 0 :(得分:4)

我可能会为此付出代价,但我只是向上或向下移动我需要的行数,例如 V 3 j < / kbd>或 V 2 k 只要它是已知的。

我有一个在绝对编号和相对编号(:set relativenumber)之间切换的绑定,因此只要它们全部在屏幕上,就可以直观地识别。

答案 1 :(得分:3)

我同意拥有你描述的行为会很好。如果您已经确定,那么您可以使用Kana的textobj-user框架始终滚动自己的自定义文本对象。我用它来创建a text object for working with ruby blocks,发现它非常容易。

答案 2 :(得分:2)

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

现在,如果我在我的例子中的第2行或第3行,我只需按 v i i 来选择内部缩进对象,它选择第2行和第3行.Groovy!