我创建了一个简单的宏来增加json对象中的数字,如下所示:
{
image: 'images/2.jpg',
thumb: 'images/2-thumb.jpg',
big: 'images/2.jpg',
title: '',
description: '',
link: 'images/2.jpg'
},
使用:
q, n, shift-v, down-till-end, p, move-to-numbers, c-a, return-to-top, q, 150@n
(对不起,如果这不是在SE中发布vim宏的合适语法)
它的确有效,但直到9日才增加。我错过了什么?
提前致谢。
修改
我正试图达到这样的目的:
{
image: 'images/3.jpg',
thumb: 'images/3-thumb.jpg',
big: 'images/3.jpg',
title: '',
description: '',
link: 'images/3.jpg'
},
{
image: 'images/4.jpg',
thumb: 'images/4-thumb.jpg',
big: 'images/4.jpg',
title: '',
description: '',
link: 'images/4.jpg'
},
... until *nth* value
答案 0 :(得分:4)
假设您的光标在第一个开始括号上,这是一种方法:
qn " start recording in register n
V% " select from here to the closing bracket, linewise
y " yank the selection
% " jump to the closing bracket
p " paste after the current line
:'[,']norm <C-v><C-a> " executing the normal mode command <C-a>(1) on all the lines that we just pasted
q " stop recording
然后执行150@n
。
(1)<C-v><C-a>
用于插入文字^A
。
答案 1 :(得分:1)
试试这个:
进入可视模式并选择要包含在宏执行中的行类型:
:normal @n
然后,当您按Enter键时,宏将应用于选定的行
答案 2 :(得分:0)
我试了一下:
qqv%:s/\d\+/\=submatch(0)+1/^M[[yGGp
简短说明
qq "recording to register q
v% "select things between { and }
:s/\d\+/\=submatch(0)+1/^M "just do +1 to all numbers (selected range)
[[ "back to begin {
yG "yank till the end
Gp "paste at the end
然后执行150@q
如果您录制同一个宏,请只需^M
Enter
如果您通过@q
^M
类型<c-v><enter>
顺便说一句,这不会赢得高尔夫,因为函数名submatch(0)
太长了......:)
答案 3 :(得分:0)
使用我的UnconditionalPaste plugin,一旦您将原始块移动到一个寄存器中,您就可以使用[N]
简单地粘贴[N]gPp
个自动递增的块(按行与所有数字粘贴递增)。
该插件还允许对文本粘贴方式进行其他几种操作。