我有一张桌子:
0 | 3
1 | 4
2 | 5
在普通模式下,我可以查看0
,点击CTRL-A
,它就会变为1.
我想要一些类似于视觉块模式的东西(其中CTRL-A
不会增加选择),在第二列上使用它并获得:
0 | 4
1 | 5
2 | 6
没有宏/插件/定义函数可以吗?
到目前为止,最好的简单解决方法是定义一个宏,计算列,并重复正确的次数,但我一直在想:为什么视觉块没有CTRL-A
?
我最初的例子是:
a | 3
b | 4
c | 5
对于数字是表格的第一个数字行的特定情况,@ hawk和@romainl给出的答案效果很好::norm! ^A
,扩展为:'<,'>norm! ^A
。有没有办法照顾一般情况?
答案 0 :(得分:6)
我怀疑这里有人能够准确地告诉你为什么对于视觉阻止模式没有<C-a>
。
我们所能做的最好的事情就是帮助您找到实现目标的有效方法。
DrChip的VisIncr或Tim Pope的speeddating插件专门用于解决“缺失的功能”。
如果您的需求相对简单,就像在您的示例中一样,简单的:norm <C-v><C-a>
就足够了。也许有一个映射...
xnoremap <C-a> :normal! ^A
(使用^A
获取<C-v><C-a>
。)
(编辑)
存在一种更通用的方法,但它不是非常适合手指:
:'<,'>s/\%V\d\+/\=submatch(0) + 1/g
当然,你可以映射它,让它更聪明一点:
xnoremap <C-a> :<C-u>let vcount = v:count ? v:count : 1 <bar> '<,'>s/\%V\d\+/\=submatch(0) + vcount <cr>gv
并给它一个朋友:
xnoremap <C-x> :<C-u>let vcount = v:count ? v:count : 1 <bar> '<,'>s/\%V\d\+/\=submatch(0) - vcount <cr>gv
使用这些映射,您可以<C-a><C-a><C-a>
和<C-x><C-x><C-x>
同时保留视觉区块或8<C-a>
/ 12<C-x>
。
(EndEdit中)
答案 1 :(得分:5)
这已在版本8中添加。退房:help new-items-8
编辑:更改了上面的帮助命令。
结果:help new-items-8
Visual mode commands:
v_CTRL-A CTRL-A add N to number in highlighted text
v_CTRL-X CTRL-X subtract N from number in highlighted text
v_g_CTRL-A g CTRL-A add N to number in highlighted text
v_g_CTRL-X g CTRL-X subtract N from number in highlighted text
答案 2 :(得分:2)
您可以在直观选择的块上运行普通命令。例如:normal! ^A
然后按Enter键