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