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

K Z*_*K Z 19 vim tabular macvim

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

 1. this is line 1 
 2. this is line 2 
 3. this is line 3
Run Code Online (Sandbox Code Playgroud)

最初我认为这将是一个琐事任务,但在花了相当长的时间谷歌搜索无效后,我意识到这可能不是一个简单/常见的任务.

非常感谢您的帮助.


编辑: 感谢您的回复.我将提供一些关于我如何提出问题的更多细节.

我试图使用Tabularize对齐像下面这样的块代码:

1. name1="Woof"
2. lucky_dog = lucky( "dog_one"= name1, 
3.                    "dog_two"= name1 )
4. name2="Howl"
Run Code Online (Sandbox Code Playgroud)

我希望它像这样对齐:

1. name1     = "Woof"
2. lucky_dog = lucky( "dog_one"= name1, 
3.                    "dog_two"= name1 )
4. name2     = "Howl"
Run Code Online (Sandbox Code Playgroud)

但我不能这样做,因为Tabularize会考虑第三行,并将所有内容整合到:

1.name1                        = "Woof"
2.lucky_dog                    = lucky( "dog_one"= name1,
3.                   "dog_two" = name1 )
4.name2                        = "Howl"
Run Code Online (Sandbox Code Playgroud)

我相信我可以想到一些正则表达式的技巧来存档所需的结果,它刚刚发生在我身上,也许我可以简单地选择第1,2,4行并使它们对齐.

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

因此问题.

谢谢你的回复!

K Z*_*K Z 12

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

在此输入图像描述


hol*_*eek 9

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

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

:g/shared unique pattern/ex or normal command here
Run Code Online (Sandbox Code Playgroud)

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

:g/shared unique pattern/normal "Ayy
Run Code Online (Sandbox Code Playgroud)

粘贴它们点击"ap

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

就像sydill所说,如果你能告诉我们你想要用线条做什么,那么我们可以更好地帮助你.