使用可变值的Vim正常命令
我需要做以下工作:使用可变值的Vim正常命令,vim,Vim,我需要做以下工作: 将变量temp设置为某个值(比如100) 去某个地方将一个数字增加一系列行的temp 将temp更新为+100 重复 我首先使用let temp=100将值100设置为temp 然后我计算出可以应用于行的以下ex命令::执行“normal!”。临时雇员“^A”这将取当前行的temp,并将该数字增加temp 不幸的是,当我直观地选择一系列行,然后点击:将命令应用于所有选中的行时,这将不起作用 除了一系列的产品线,我怎样才能达到同样的效果 以下是一个例子: 1 2 3 4 5
- 将变量
设置为某个值(比如100)temp
- 去某个地方将一个数字增加一系列行的
temp
- 将
更新为+100temp
- 重复
let temp=100
将值100设置为temp
然后我计算出可以应用于行的以下ex命令::执行“normal!”。临时雇员“^A”
这将取当前行的temp,并将该数字增加temp
不幸的是,当我直观地选择一系列行,然后点击:
将命令应用于所有选中的行时,这将不起作用
除了一系列的产品线,我怎样才能达到同样的效果
以下是一个例子:
1
2
3
4
5
应该成为
101
102
103
104
105
然后,我将把temp更新为let temp=temp+100
,并对下一个块进行重复,以此类推
谢谢 如果没有人知道更好的方法,我刚刚找到了一个解决办法
我录制了一个宏
b
来运行执行“正常!”。临时雇员当前行上的“^A”
。然后录制另一个宏a
,该宏将转到并以视觉方式选择感兴趣的组中的所有行,然后运行:“直接回答您的问题,:help:execute
是阻止您的原因,原因有两个:
:执行
不接受范围
:开始时不需要执行
以下命令在不使用的情况下执行作业:execute
:
:[range]normal! <C-r>=temp<CR><C-v><C-a><CR>
细分:
:帮助:xnoremap
创建可视模式映射
:help
使其成为表达式映射,实际RHS在运行时进行计算
是您要按的键
temp''
是表达式,它将temp
的当前值与
连接起来,以获得100
、200
等
用法:
将temp
设置为所需值:
:let temp = 100
选择一些行:
v<motion>
<motion>
v<motion>
移动到下一个块并选择一些线:
v<motion>
<motion>
v<motion>
v
增加每行的第一个数字:
<key>
<key>
但是,手动方式是这样的:
v<motion> " visually select the desired lines
100<C-a> " increment the first number on each line by 100
v“目视选择所需的行
100“每行的第一个数字增加100
然后:
v
200“每行的第一个数字增加200
等等…所以我不确定引入变量的好处是什么,:normal
,等等,在这里。我认为我们可以使用全局命令来做这项工作,它接受范围
:'<,'>g/./execute "normal! ". temp. "^A"
:“在这种情况下,您可以在视觉块模式下预先添加10
。但我猜您也有>9的数字?是的,每组100个,至少有25个这样的组。@John,在这种情况下,您可能会发现我的答案很有趣,但一般来说。
:'<,'>g/./execute "normal! ". temp. "^A"