抽搐并粘贴,但变化很小

时间:2018-01-20 11:09:18

标签: vim

我想在每个粘贴的行后面自动添加一个指定的数字,这个数字每过一次都会增加。

有时我想声明许多变量。所以我写了一个声明并复制(猛拉)它并过去到第二行。然后我可以用点运算符“。”重复这个操作。但是让这些变量变化非常烦人。

我想实现这样的目标:

variable (yy)     variable1 (yy)
variable (p)      variable2 (p)
variable (.)  =>  variable3 (.)
variable (.)      variable4 (.)
variable (.)      variable5 (.)

是否可以仅在vim中执行此类操作?

3 个答案:

答案 0 :(得分:1)

我不知道是否有人可以通过ultisnips插值来实现,我认为这是可能的,但我想出了这个解决方案

yy4p .......... copy 4 times
v} ............ select block
g<Ctrl-a> ..... increase the sequence

直到这里你有一个快速增加数字的主要解决方案

fy ............ jump to the first 'y'
<Ctrl-v> ...... start selection block
3jl ........... extend selection
c.<Esc> ....... swich 'yy' with .
fy. ........... finishes

使用宏

qa ............ start recording marcro 'a'
yyp ........... copy line
ci(.<Esc> ..... change first ()
Ctrl-a ........ increase
ci(. .......... change second ()
Esc ........... stop recording macro 'a'
3@a ........... 4x macro 'a'

答案 1 :(得分:0)

:%s/variable/\= printf("variable%d",line('.')-6)/

或者如果你有一个支持perl的vim(在很多linux发行版中都是默认的)

:perldo s/variable/$& . ++$n/e

答案 2 :(得分:0)

我的UnconditionalPaste plugingppgPp映射(以及更多的粘贴变体)。第一个只增加第一个十进制数,第二个增加所有数字。

所以,从

开始
variable1 = 'foo1'

yygpp将创建:

variable1 = 'foo1'
variable2 = 'foo1'

yygPp会这样做:

variable1 = 'foo1'
variable2 = 'foo2'

这些支持[count],也可以.重复。