如何选择多个不在连续块中的行?

时间:2011-09-03 22:36:26

标签: vim macvim tabular

我正在尝试选择多个不在连续块中的行。例如,我想在不选择第2行的情况下同时选择第1行和第3行:

 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行并使它们对齐。

然后我意识到这不是一件容易的事。

因此问题。

感谢您的回复!

3 个答案:

答案 0 :(得分:12)

现在有一个出色的插件可以在Vim中实现多选:Vim-multiple-cursors

enter image description here

答案 1 :(得分:9)

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

您可以做的是确定一个共同的,独特的模式,由您想要操作的行共享,并使用'global'ex-command或'g'来执行此操作:

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

例如,要将行复制到寄存器,请说“a”寄存器:

:g/shared unique pattern/normal "Ayy

将它们粘贴到“ap

在yy之前出现的大写字母告诉vim你要复制并将这些行附加到寄存器。

像sydill一样,如果你能告诉我们你想要用这些线做什么,那么我们可以更好地帮助你。

答案 2 :(得分:3)

This script似乎提供了您正在寻找的功能。