Vim 将文本格式化为块(对齐第二列)

Vim 将文本格式化为块(对齐第二列),vim,text-formatting,Vim,Text Formatting,很多时候,我的一些代码中有一个初始值设定项列表,如下所示: class Foo(object): def __init__(self, data): self.foo = data.getFoo() self.bar = data.getBar() self.something = data.getSomething() 正如您所看到的,我喜欢像表格一样对齐代码。在很多情况下,上面的代码可以通过编写Vim脚本生成,

很多时候,我的一些代码中有一个初始值设定项列表,如下所示:

class Foo(object):
    def __init__(self, data):
        self.foo       = data.getFoo()
        self.bar       = data.getBar()
        self.something = data.getSomething()
正如您所看到的,我喜欢像表格一样对齐代码。在很多情况下,上面的代码可以通过编写Vim脚本生成,这些代码来自其他一些程序的输出(
descripe“foo”;
例如在数据库中)。不幸的是,脚本输出通常如下所示:

class Foo(object):
    def __init__(self, data):
        self.foo = data.getFoo()
        self.bar = data.getBar()
        self.something = data.getSomething()
因此,在自动生成th赋值语句之后,我必须手动对齐所有语句以获得所需的外观


现在:有没有办法让vim自动对齐语句的“后半部分”?

一种简单的方法是首先在等号周围留出足够的空间:

:s/=/                         =/
然后,阻止选择(
Ctrl-V
),以便选择所有
=
字符和后面的所有内容。猛拉(
y
)将其粘贴到其他地方

接下来,取消粘贴行的缩进(
10the)就是这样做的。您可以看到它的作用(并学习如何使用它)

更新:我会简单解释一下插件的用法,但是没有更好的解释,所以我强烈建议大家观看


要使用插件,只需调用
:Tab/=
,它将对齐文件中的所有等号。如果要指定要对齐的行,只需给它一个范围
:5,10Tab/=
,或使用可视模式(
v
v
)要选择所需的行,请按
,然后插入制表命令,您的命令行将如下所示:
:“除了前面提到的制表插件之外,还有一个值得尊敬的插件。

您能更清楚地解释一下您是如何获得此输出的吗?使用
:r something
?我发现了一个vim脚本,声称可以这样做,但我不想将其作为答案发布,因为我没有实际使用它:。另请参见此问题:@romainl-源代码可以是从粘贴/处理的SQL到文件列表的任何内容。可以通过执行一些
:r!…
或其他任何操作来读取。非常好,我希望在需要时能记住它…以获得答案n更好的是,您可以在示例中解释如何使用它(如
:Tab/=
)。@mliebelt我已经添加了一个快速的解释。但是正如我所说,我给出的任何解释都不会比Drew的视频更好。确实做了很多工作。为什么不简单:只需在所有行中添加足够的制表符/空格,除了在=