假设我在可视模式下选择了一列文本并进行了相同的编辑。现在我想将选择(而不是文本)移动到下一列,以便我可以在第二列中编辑这些条目。我怎么能这样做。
+------+-------+-------+
| line | A | B |
+------+-------+-------+
| 1 | 2 | 4 |
| 2 | 4 | 4 |
| 3 | 0 | 3 |
| 4 | 3 | 1 |
| 5 | 6 | 1 |
+------+-------+-------+
让我们假设我选择了A列的1,2,3行(即我选择了元素2,4,0)。我递增了这些数字。现在我想将选择移动到B列(即选择元素4,4,3)。现在我想减少B列中的选定元素
答案 0 :(得分:2)
您正在寻找1v
。这将重新创建相同模式(在您的示例中为 blockwise )和相同尺寸(宽度和高度,尽可能)的视觉选择,但从当前光标位置开始。但是,您需要对第一个选择应用更改!
因此,一旦您处理了第一列(例如通过<C-A>
增加了它),只需转到下一个列(2w
,f4
,...),并输入1v
。
答案 1 :(得分:1)
如果您使用选择2 4 0
递增Ctrl-A
,您仍然希望递增元素4 4 3
,则不必移动选区。您只需将光标移至4
列中的第一个B
,然后按.(dot)
即可重复上一个Ctrl-a
。然后4 4 3
将为5 5 4
关于你的评论,似乎你想对“选择”做不同的操作。你可以这样做:
Ctrl-V
选择专栏A
(2,4,0
),做点什么B
栏,第一行元素4
,然后按1Ctrl-V
您应该看到4,4,3
已被选中。所以诀窍是[count]ctrl-v
,我们按1
作为计数,vim会选择与光标起点上最后一个选择相同的行数。请阅读:h ctrl-v
了解详情。
答案 2 :(得分:1)
大多数现代编辑器都有一个名为“多个游标”的功能,它听起来像是多个游标,可以使用相同的按键同时编辑多个位置。这是一个高效,直观的功能,可以完成这样的任务。默认情况下,在Vim中没有办法做到这一点,相反,你必须低效地将动作,计数和命令粘合在一起,以试图达到你想要的效果。
幸运的是,有一个插件可以让我们有效地使用多个游标,vim-multiple-cursors。由于Vim接口的性质有限(就像它不可能有一个屏幕外的光标),它可能是相当错误的,但在这个例子中它的效果非常好。
此GIF的击键:
多个游标是以行/列或任何其他格式编辑重复数据的快速直观方式。不幸的是,Vim永远无法匹配其他编辑器的多个游标的速度和效率,但这个插件对于这样的任务仍然非常有用。
答案 3 :(得分:0)
我的解决方案:
:4,6norm 3w
CTRL-V 按Ctrl-a 2w
CTRL-V CTRL-X
:4,6 .......... interval where we will perform the change
norm .......... normal mode
3w ............ jump to the seccond column
Ctrl-v ........ used to insert literal key combinations
Ctrl-a ........ increase number
2w ............ jump to the next column
Ctrl-v ........ again literal combination stuff
Ctrl-x ........ decrease number