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

时间:2016-03-28 20:12:33

标签: vim

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

var1 = a1[a1 >= 20]
variable2 = array2[array2 >= 20]
var_5 = arr3[arr3 != 10]

问题是vim的Align命令将使用用于赋值语句的“=”和等于语句的那个​​。然后我得到:

var1      = a1[a1 >         = 20]
variable2 = array2[array2 > = 20]
var_5     = arr3[arr3 !     = 10]

这是有问题的,因为它不会增加可读性,而是破坏它,并且因为它破坏了逻辑运算符。

我尝试使用命令

:AlignCtrl \<=\>

但这没有帮助。

感谢

3 个答案:

答案 0 :(得分:3)

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

:AlignCtrl \s=

或者,如果此情况下的空格包含在对齐字段中,并且您要删除它,请使用:

:AlignCtrl \s\zs=

答案 1 :(得分:2)

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

答案 2 :(得分:2)

当谈到vim中的对齐时,我使用Tabular Plugin。请参阅表格上的Drew Neal精彩的截屏视频:http://vimcasts.org/episodes/aligning-text-with-tabular-vim/

基本上,表格将与正则表达式匹配的文本对齐,例如

:Tabular /[<>=!]\+

输入

var1 = a1[a1 >= 20]
variable2 = array2[array2 >= 20]
var_5 = arr3[arr3 != 10]

输出

var1      = a1[a1         >= 20]
variable2 = array2[array2 >= 20]
var_5     = arr3[arr3     != 10]

正则表达式中的方括号表示字符类,即一组将匹配的单个字符。正则表达式[<>=!]\+表示&#34;匹配一个或多个字符<>=!&#34;。因为]字符标记了字符类的结尾,所以必须在开头[之后直接放置,以使其含义明确:

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

也将括号括起来:

var1      = a1     [ a1     >= 20 ]
variable2 = array2 [ array2 >= 20 ]
var_5     = arr3   [ arr3   != 10 ]