繁体   English   中英

列模式下的vim移位选择(非文本)

[英]vim shift selection in column mode (not text)

假设我已在可视模式下选择了一列文本并对其进行了编辑。 现在,我想将选择内容(而非文本)移至下一列,以便可以在第二列中编辑这些条目。 我该怎么做。

详细

+------+-------+-------+ 
| 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列中的选定元素

您正在寻找1v (在你的例子嵌段 )和相同的尺寸(宽度和高度,尽可能地)的此重新创建相同模式的可视选择,但在当前光标位置开始。 不过,您需要对第一个选择进行更改!

因此,一旦您处理了第一列(例如,通过<CA>对其进行了增加),只需移至下一个列( 2wf4 ,...),然后键入1v

如果使用selection和Ctrl-A递增2 4 0 ,则仍要递增4 4 3元素,则不必移动选择。 您只需将光标移动到B列的前4上,然后按.(dot)即可重复上一个Ctrl-a 那么4 4 3将是5 5 4

更新

关于您的评论,似乎您想对“选择”执行不同的操作。 您可以执行以下操作:

  • Ctrl-V选择列A2,4,0 ),执行某些操作
  • 将光标移动到B列,第一行元素4 ,然后按1Ctrl-V

您应该看到已选择4,4,3 因此,诀窍是[count]ctrl-v ,我们按1作为count,vim将从您的光标起点选择与您最后一次选择相同的行数。 阅读:h ctrl-v了解详细信息。

大多数现代编辑器都具有一个称为“多个光标”的功能,听起来很像,多个光标用于使用相同的按键一次编辑多个位置。 这是一项高效且直观的功能,可以完全执行此任务。 在Vim中,默认情况下是无法执行此操作的,相反,您必须低效地将运动,计数和命令粘合在一起,以尝试实现所需的功能。

幸运的是,有一个插件可以使我们获得大约50%的效率,即高效的多个游标,即vim-multiple-cursors 由于Vim界面的性质有限(例如不可能有屏幕外的光标),因此可能会引起很多bug,但在此示例中,它工作得很好。

在此处输入图片说明

此GIF的按键:

  • (从第1行,A列开始)
  • CTRL v可视块模式
  • j j将选择向下移动2行
  • CTRL n进入多个光标模式。 将每行上可视块的开始转换为功能最强大的Vim光标。
  • CTRL 一个在每一个光标位置增量
  • w w将每个光标移到2个单词以上(移至b列)
  • CTRL x每个光标位置的减量
  • ESC退出多光标模式。

多个光标是一种以行/列或任何其他格式编辑重复数据的快速直观的方法。 不幸的是,Vim永远无法与其他编辑器的多个光标的速度和效率相提并论,但是该插件对于此类任务仍然非常有用。

我的解决方案:: :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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM