在 vim 等中,您可以使用CTRLAand来增加或减少光标所在的数字CTRLX。但是,这会增加整数,但我想直接增加光标下的数字。这有点难以描述,所以这就是我的意思:
Ctrl+A usage, cursor is over the "6":
[6]5 -> 66
What I need:
[6]5 -> 75
or:
3[8]90 -> 3990
我希望这是有道理的。
我用谷歌搜索了一下,但我不确定是否存在这样的快捷方式,因此非常感谢任何提示!
在 vim 等中,您可以使用CTRLAand来增加或减少光标所在的数字CTRLX。但是,这会增加整数,但我想直接增加光标下的数字。这有点难以描述,所以这就是我的意思:
Ctrl+A usage, cursor is over the "6":
[6]5 -> 66
What I need:
[6]5 -> 75
or:
3[8]90 -> 3990
我希望这是有道理的。
我用谷歌搜索了一下,但我不确定是否存在这样的快捷方式,因此非常感谢任何提示!
<C-a>
并<C-x>
处理整数(一位或多位数字),但不能处理数字的“部分”。然而,它需要一个“计数”,所以10<C-a>
变成.[6]5
75
另一种选择是,因为您只想更改一位数字,所以要r7
变成.[6]5
75
在这种情况下,我通常输入r然后输入我想要的数字。
我猜 3[9]42 应该变成 4042(否则,Xavier 的解决方案几乎是完美的(*)),我会使用以下内容:
s/\d*\%#\d/\=(submatch(0)+1)
可以映射成:
nnoremap <silent> µ :<c-u>s/\d*\%#\d/\=(submatch(0)+v:count1)<cr>``
为了接受计数。我看到的唯一问题是它不能支持重复(如:h .
)
(*) 从某种意义上说,重复该命令不会帮助我们将一系列不同的数字增加相同的数量。
可能有更好的方法,但你可以制作一个宏或映射到这个的东西:
noremap <LEADER>a a <ESC>h<C-a>lxh
noremap <LEADER>z a <ESC>h<C-z>lxh
它基本上使“65”“6 5”,增加 6 并删除空间。可能还有一个更短的版本也可以。
在全局命令中用于Ctrlv插入文字Ctrla,这意味着在正常模式下将每个数字增加\d\+
10
:g/\d\+/norm! 10 Ctrl-v Ctrl-a
我们还可以避免键入“Ctrl-v Ctrl-a”,只需使用带双引号的“exec”,如下行所示。如果您尝试使用单引号,则此解决方案不起作用。
:g/\d\+/exec "norm! 10\<C-a>"
在正常模式下,您可以简单地执行以下操作:
10 Ctrl-a
你可以这样做(使用任何 intead F9):
:nnoremap <F9> :exec 's@^\(.\{' . (col(".")-1) . '\}\)\(.\)\(.*\)@\1' . (getline(".")[col(".")-1]+1) . '\3@'<CR>
基本上它只是在行中找到光标位置,在其上构建一个正则表达式字符串并使用该位置上的字符加 1。
你可以这样v11<C-A>x
做(digit + 11) modulo 10
如果你经常这样做,那么你可以将它映射到你想要的任何东西(<leader>a
?)。
注意:如果数字不是 9 则v<C-A>
有效。我从vimgolf得到这个提示,我推荐这个网站:D
如果你不介意弄乱"
寄存器,下面是另一个序列:
s<C-R>=<C-R>"+1<CR>
v <C-A/X>
效果很好,因为<C-A/X>
适用于光标所在的单词(即数字)或视觉选择(即数字)。