我经常发现自己在飞行中添加数字到数字列表。
体育课。
38
12 x
215 x
98 x
03 x
23
我想要做的是选择一个可视的数字块(上例中为x) 用另一个数字增加或减少数字。
我尝试使用两个宏来做(我想一个宏是不可能的):
@a增加数量 - > 5 @ a - >用5增加每个数字(@a ='^ Aj')
@x减少数量 - > 5 @ x - >减少每个数字5(@x ='^ Xj')
但...
我不知道
1)如何仅在我的选择中使用宏(不计行)
2)如何在不创建全新宏的情况下即时更改增加/减少数量
3)如何解决此问题:当我向上述数字添加100时,数字12
,98
和03
向右移动1个字符。
另一个解决方案是创建一个函数,但它是i.m.o.复杂添加每次输入框中的值,我必须更改几个数字。
答案 0 :(得分:4)
选择所有行后,您可以执行以下操作:
:'<,'>norm 5<C-v><C-a> <-- inserts ^A
将5
添加到每个号码。
无法避免对齐问题AFAIK,是的,vimscript可能是正确的工具。
答案 1 :(得分:1)
增加数字也不错。你有一些选择,但我个人建议使用Tim Pope的speeddating插件。它将提供一个很好的<c-a>
视觉模式映射。
但是如果你想要一个快速而又脏的映射,你可以去:
xnoremap <silent> <c-a> :<c-u>exe "'<,'>norm! ".min([col("'<"),col("'>")]).'<bar>'.v:count1."\<c-a>"<cr>
由于您提到了对齐,您可能还想查看godlygeek的Tabular插件。在vimcasts处抽出了screencast on using tabular。
如果您决定制作自己的地图/功能/插件,我建议您查看以下内容:
:h :s
:h /\%V
:h sub-replace-expression
:h printf(