很多时候,我的一些代码中都有一个初始化器列表,如下所示:
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自动对齐语句的“后半部分”?
答案 0 :(得分:3)
tabular plugin就是这样做的。您可以看到它的实际效果(并了解如何使用它)here。
更新:我将简要解释一下插件的使用情况,但没有任何解释会比Drew's video更好,所以我强烈建议所有人观看。
要使用该插件,只需致电:Tab /=
,它将对齐文件中的所有等号。如果您想指定要对齐的行,只需为其指定范围:5,10Tab /=
或使用可视模式(v
或V
)选择所需的行,请按{{1}并插入Tabularize命令,您的命令行将如下所示::
。
:'<,'>Tab /=
命令中的参数是正则表达式,这意味着您可以使用此命令对齐许多内容。您将仅受正则表达式知识的限制。
对不起任何英文错误:D
答案 1 :(得分:1)
已提及的 Tabular 插件的替代方案是值得尊敬的Align plugin。
答案 2 :(得分:0)
一种天真的做法是首先在等号周围留出足够的空间:
:s/=/ =/
然后,阻止选择(Ctrl-V
),以便选择所有=
个字符和后面的所有内容。 Yank(y
),将其粘贴到其他地方。
接下来,取消缩贴粘贴的线条(10<
通常就足够了),直到它们与最左边的位置对齐。然后,再次阻止选择并粘贴到它们被切断的位置。
虽然效果很好,但感觉就像很多工作一样。