3

很多时候,我的一些代码中有一个初始化器列表,如下所示:

class Foo(object):
    def __init__(self, data):
        self.foo       = data.getFoo()
        self.bar       = data.getBar()
        self.something = data.getSomething()

如您所见,我喜欢我的代码像表格一样对齐。在很多情况下,上面的代码可以通过脚本 Vim 生成,来自其他程序的输出(DESCRIBE "foo";例如在数据库中)。不幸的是,脚本输出通常如下所示:

class Foo(object):
    def __init__(self, data):
        self.foo = data.getFoo()
        self.bar = data.getBar()
        self.something = data.getSomething()

因此,在自动生成赋值语句之后,我必须手动对齐所有语句以获得所需的外观。

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

4

3 回答 3

3

表格插件正是这样做的。您可以在此处查看它的运行情况(并了解如何使用它)。

更新:我会简单解释一下插件的使用,但没有解释会比德鲁的视频更好,所以我强烈建议大家观看。

要使用该插件,只需调用:Tab /=它,它将对齐文件中的所有等号。如果要指定要对齐的行,只需给它一个范围:5,10Tab /=或使用可视模式(vV)选择所需的行,按:并插入 Tabularize 命令,您的命令行将如下所示:'<,'>Tab /=

命令中的参数Tab是一个正则表达式,这意味着你可以使用这个命令来对齐很多东西。您只会受到正则表达式知识的限制。

对不起任何英语错误:D

于 2012-05-18T18:47:03.687 回答
1

已经提到的表格插件的替代品是古老的对齐插件

于 2012-05-18T19:19:58.847 回答
0

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

:s/=/                         =/

然后,块选择 ( Ctrl-V) 以便选择所有=字符和后面的所有内容。Yank( y) ,将其粘贴到其他地方。

接下来,取消缩进粘贴的行(10<通常就足够了),直到它们与最左边的位置对齐。然后,再次选择块并粘贴到它们被切断的位置。

不过,为了达到预期的效果,这感觉像是做了大量工作。

于 2012-05-18T16:35:37.100 回答