使用vim对齐一系列python赋值语句,其中一些语句包括逻辑语句

使用vim对齐一系列python赋值语句,其中一些语句包括逻辑语句,vim,Vim,我希望能够使用=对齐赋值语句,例如使用vim对齐以下语句: var1 = a1[a1 >= 20] variable2 = array2[array2 >= 20] var_5 = arr3[arr3 != 10] 问题是vim的Align命令将使用赋值语句中使用的=和equal语句中的=。然后我得到: var1 = a1[a1 > = 20] variable2 = array2[array2 > = 20] var_5 = arr3

我希望能够使用=对齐赋值语句,例如使用vim对齐以下语句:

var1 = a1[a1 >= 20]
variable2 = array2[array2 >= 20]
var_5 = arr3[arr3 != 10]
问题是vim的Align命令将使用赋值语句中使用的=和equal语句中的=。然后我得到:

var1      = a1[a1 >         = 20]
variable2 = array2[array2 > = 20]
var_5     = arr3[arr3 !     = 10]
这是有问题的,因为它不但没有增加可读性,反而破坏了它,还因为它破坏了逻辑运算符

我试着使用这个命令

:AlignCtrl \<=\>
但那没用


谢谢

您可以使用该插件。它允许您仅指定用于对齐的分隔符的第一次出现。

您可以使用该插件。它允许您只指定用于对齐的分隔符的第一个匹配项。

我不确定您使用的是哪个对齐脚本,您没有指定,但它可能支持正则表达式,您的想法很接近。但是,您的单词边界正则表达式不是正确的选项,因为>确实算作单词边界,它实际上取决于您的“iskeyword”选项。您可以尝试在前面加空格的等号中对齐:

:AlignCtrl \s=
或者,如果本例中的空间包含在“对齐”字段中,并且您希望将其删除,请使用:

:AlignCtrl \s\zs=

我不确定您使用的是哪个对齐脚本,您也没有指定,但它可能支持regex,您的想法很接近。但是,您的单词边界正则表达式不是正确的选项,因为>确实算作单词边界,它实际上取决于您的“iskeyword”选项。您可以尝试在前面加空格的等号中对齐:

:AlignCtrl \s=
或者,如果本例中的空间包含在“对齐”字段中,并且您希望将其删除,请使用:

:AlignCtrl \s\zs=

当涉及到vim中的对齐时,我使用。请看Drew Neal在Tablear上的精彩视频:

本质上,tabular将在与正则表达式匹配的文本上对齐,例如

:Tabular /[<>=!]\+
输出

var1      = a1[a1         >= 20]
variable2 = array2[array2 >= 20]
var_5     = arr3[arr3     != 10]
正则表达式中的方括号表示字符类,即将匹配的一组单个字符。正则表达式[=!]\+表示匹配一个或多个字符、=、或!。由于]字符标志着字符类的结束,因此必须直接放置在开头[以便其含义明确:

:Tabular /[][<>=!]\+

当谈到vim中的对齐时,我使用了。请参见Drew Neal在Tablear上的惊人屏幕:

本质上,tabular将在与正则表达式匹配的文本上对齐,例如

:Tabular /[<>=!]\+
输出

var1      = a1[a1         >= 20]
variable2 = array2[array2 >= 20]
var_5     = arr3[arr3     != 10]
正则表达式中的方括号表示字符类,即将匹配的一组单个字符。正则表达式[=!]\+表示匹配一个或多个字符,=,或!。因为]字符标记字符类的结尾,所以必须直接放置在打开后[因此其含义是明确的:

:Tabular /[][<>=!]\+

谢谢,我正在使用Chip博士的脚本。我尝试了你上面的建议,但它在发布时没有帮助,但当我简单地做到:Align\s=它有效。你知道为什么吗?谢谢,我正在使用Chip博士的脚本。我尝试了你上面的建议,但在发布时没有帮助,但当我简单地做到:Align\s=它有效。你知道为什么吗?Thanks!我不知道Tabular,视频也不错。我还是正则表达式的新手。据我所知,您提供的表达式将选择括号内的任何字符。那么表达式如何告诉它在第一个实例中对齐单个=,但在第二个实例中对齐各种组合。also,如果我想进一步对齐方括号呢?我会做一个]括号内?谢谢!我不知道tablar,视频也很好。我还是正则表达式的新手。据我所知,您提供的表达式将选择括号内的任何字符。那么表达式如何告诉它首先在单个=上对齐,但在各种组合上对齐还有,如果我想进一步对齐方括号呢?我会在括号内做一个]吗?谢谢,我不知道vim easy align。老实说,我没有想到只做第一个,这通常是有用的-所以谢谢!实际上,我认为Align也提供了该选项。然而,当我想要对齐多个delimeter时,我经常会混合其他东西。我看了你指给我看的文件。看起来*=将自动对齐所有包含==的运算符。对吗?另外,它看起来会忽略包含的线路,这些线路中根本没有操作员,对吗?谢谢,我不知道vim easy align。老实说,我没有想到只做第一个,这通常是有用的-所以谢谢!实际上,我认为Align也提供了该选项。然而,当我想要对齐多个delimeter时,我经常会混合其他东西。我看 看看你指给我看的文件。看起来*=将自动对齐所有包含==的运算符。对吗?而且,它看起来会忽略那些根本没有运算符的包含行,对吗?