Vim - 在括号中选择文本,多行

时间:2013-03-28 03:48:20

标签: vim selection

value(val_1)
value(val_100)
value(val_10)

我想在括号中选择文本并为多行做一行,对于一行,我可以使用 f v a 但我不知道如何选择其余2行。

编辑(解决方案)

我想要的是更改每个行中带有唯一文本的括号内的文本,首先,我想要选择文本,删除它然后手动更改文本,@ rosipov告诉有一个插件来做选择部分和这很棒,但是@romainl给了我另一个方向也可以。

f(ci(foo<Esc>jci(bar<Esc>jci(baz<Esc>

2 个答案:

答案 0 :(得分:2)

你想选择这个:

value([val_1])
value([val_100])
value([val_10])

或选择:

value([val_1)]
[value(val_100)]
[value(val_10])

遗憾的是第一个不可行。但是,根据您对所选文本的处理方式,更改它,例如,合理的近似值为:

f(l<C-v>jj$cnew value)<Esc>

但是我确信很多Vimmers可能会通过替换解决问题:

:,+2s/(.*/(new value)

第二种方法只需:

f(lv3/)h

f(ljjt)

答案 1 :(得分:1)

在这种情况下,您可能会对EasyMotion插件感兴趣:https://github.com/Lokaltog/vim-easymotion

使用插件时,它将是: f v Leader Leader < KBD>˚F C

Or: Leader Leader f a v < / KBD> ˚F C

其中 c 是代表第三个右括号的字母, a 代表第一个开头p。

编辑:如果没有插件,可以按行号进行操作。

假设您使用第1-3行: f v 3 G < / KBD> ˚F

其中 3 G 代表“转到第3行”,在视觉和普通模式下都有效。