Vim - 在可视选择中跳过行

6
在可视化模式下,如何选择一段行但跳过某些行?
例如:
1 Hello
2 World
3 Foo
4 Bar

我如何选择第1行和第4行而不选择第2行和第3行?在Vim中是否可能实现?
也希望能在vifm中使用。

2
我可能完全错了,但我认为可视模式仅支持每种连续区域。选定这些行后你想做什么呢? - Ry-
3
Vim不支持非连续选择(虽然我想一些人可能会认为Visual Block模式是非连续的)。你想要实现什么目标? - bdesham
我真的很怀疑它是否得到支持。我只是试图找到一种更好的方法来复制/粘贴/删除多行,而没有@user2657794的答案。 - user2709465
对于在vifm上使用它,选择文件/文件夹以执行某些操作。 - user2709465
1
好的,如果你不想使用命令,我想vim-multiple-cursors是人们使用的东西。 - Ry-
不是关于命令的问题...我已经尝试过这个插件了,但不是同一个。 - user2709465
2个回答

11

如果您需要复制/粘贴/删除多个不连续的行,可以使用命名寄存器。

您可以通过进行多个选择来实现此操作:

选择第一部分并使用"ay/"ad进行复制/删除。这将复制/删除到寄存器a中。您可以使用任何字母。

对于每个后续选择,请使用大写寄存器名称:"Ay/"Ad,这将追加选择到寄存器内容而不是覆盖它。

之后,您可以在需要的位置粘贴它:"ap。或者如果您需要将其放在系统剪贴板中::let @*=@a

要检查寄存器a的内容,请使用:reg a:reg将显示所有寄存器的内容。


假设@bdesham是正确的(vim不支持非连续选择),那么这就是最好的答案。非常快速和实用。 - user2709465

2
  • multiselect 允许选择非连续的区域,并对它们执行 Ex 和 normal mode 命令。只能按行操作,不能选择任意区域!
  • 我的 RepeatableYank 插件 可以使得多个范围/选择内容更容易被复制,因为你可以使用 . 来重复操作,不必每次都输入大写字母 "A 来追加。

多选使用鼠标,不是我的方式。但你的插件非常有趣,我打算在我的vim上测试它。虽然这不是最好的答案,因为我需要一个也适用于vifm的解决方案。 - user2709465
1
您也可以在多选视觉模式中使用 <Enter> 键;鼠标只是另一种选择。 - Ingo Karkat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接