如何选择不连续的多行?这些行与选中的其他行不相邻。涉及到IT技术。

23

我想选择不连续的多行文本。例如,我想同时选择第1行和第3行,而不选择第2行:

 1. this is line 1 
 2. this is line 2 
 3. this is line 3

一开始我以为这只是一个无聊的任务,但在花费了相当长的时间进行谷歌搜索后仍然没有结果,我意识到这可能不是一个简单/常见的任务。

非常感谢您的帮助。


编辑:感谢回复。以下是我提出这个问题的更多细节。

我尝试使用Tabularize对如下代码块进行对齐:

1. name1="Woof"
2. lucky_dog = lucky( "dog_one"= name1, 
3.                    "dog_two"= name1 )
4. name2="Howl"

我希望它能对齐得像这样:

1. name1     = "Woof"
2. lucky_dog = lucky( "dog_one"= name1, 
3.                    "dog_two"= name1 )
4. name2     = "Howl"

但我无法这样做,因为Tabularize会将第三行考虑在内,并将所有内容对齐成:

1.name1                        = "Woof"
2.lucky_dog                    = lucky( "dog_one"= name1,
3.                   "dog_two" = name1 )
4.name2                        = "Howl"

我相信我可以想出一些正则表达式的技巧来实现期望的结果,起初我想也许我可以简单地选择第1、2、4行并将它们对齐。

然后我意识到这不是一项容易的任务。

因此提出了这个问题。

感谢回答!


4
据我所知,不行。但是,如果您告诉我们您想如何使用这个选择,我们可能会帮助找到另一种方法来完成它...也许。 - sidyll
你似乎正在寻找的功能,这个脚本 似乎提供了。 - Frost
@sidyll 谢谢!这一切都始于我尝试使用Tabularize插件来对齐几行代码。我想在一块代码中跳过几行,但对齐其余行。我可以使用正则表达式来实现这一点,但同时也想到了如果我能够同时选择这些行,Tabularize就可以仅对我选择的行进行对齐而跳过其他部分。因此有了这个问题。 - K Z
这个问题有完美的答案 https://dev59.com/qYDba4cB1Zd3GeqPAB1S - dakini
2个回答

15
现在有一个很棒的插件可以在Vim中启用多选: Vim-multiple-cursors。看起来像这样:

enter image description here


9

在vim中不能选择不同的文本块。

相反,您可以识别一种共同的、独特的模式,该模式是您要操作的行所共享的,并使用“global”ex命令或“g”命令执行操作,如下所示:

:g/shared unique pattern/ex or normal command here

例如,将这些行复制到寄存器中,比如说寄存器'a':
:g/shared unique pattern/normal "Ayy

要粘贴它们,请按“ap”。

在yy前面的大写字母A告诉Vim您想要将这些行复制并附加到a寄存器中。

就像sydill所说,如果您能告诉我们您想对这些行执行什么操作,那么我们可以更好地帮助您。


好的。顺便说一下,这也是我能想到的唯一解决方案。我在想是否还有其他解决方案... - lucapette

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