Vim:如何在可视块或行范围内用递减的特定数字进行替换
假设我有这个输入:Vim:如何在可视块或行范围内用递减的特定数字进行替换,vim,Vim,假设我有这个输入: {3:3} abc {3:4} def hjkl 输出应为: {3:2} abc {3:3} def hjkl 所以,在“:”之后“}”之前递减行首的数字。 请注意,这应仅适用于选定的可视块,而不适用于整个缓冲区/文件(或行范围)在可视块中,一种可能的解决方案: :`<,`>s/:\(\d\+\)}/\=":".(submatch(1) -1)."}"/g :`s/:\(\d\+\)}/\=“:”(子匹配(1)-1)。“}”/g 在可视块中,一种
{3:3} abc
{3:4} def hjkl
输出应为:
{3:2} abc
{3:3} def hjkl
所以,在“:”之后“}”之前递减行首的数字。请注意,这应仅适用于选定的可视块,而不适用于整个缓冲区/文件(或行范围)在可视块中,一种可能的解决方案:
:`<,`>s/:\(\d\+\)}/\=":".(submatch(1) -1)."}"/g
:`s/:\(\d\+\)}/\=“:”(子匹配(1)-1)。“}”/g
在可视块中,一种可能的解决方案:
:`<,`>s/:\(\d\+\)}/\=":".(submatch(1) -1)."}"/g
:`s/:\(\d\+\)}/\=“:”(子匹配(1)-1)。“}”/g
另一个(甚至更短)解决方案:
:exe "'<,'>norm 0f:\<C-X>"
其中^X
(从):
从光标处或之后的数字或字母中减去
另一个(甚至更短)解决方案:
:exe "'<,'>norm 0f:\<C-X>"
其中^X
(从):
从光标处或之后的数字或字母中减去
请注意:即使您使用的是可视块,您的命令实际上也会在整行上运行(请参阅和问题)。顺便说一句,它可以缩短为“@JairLopez:
:”请注意:即使您使用的是可视块,您的命令实际上也会在整行上运行(请参阅和问题)。顺便说一下,它可以缩短为:“@JairLopez::”