【问题标题】:Have Tabulize ignore some lines and align the others让 Tabulize 忽略某些行并对齐其他行
【发布时间】:2016-04-11 10:49:43
【问题描述】:

我希望 Tabulize 忽略没有特定字符的行,然后对齐/表格化这些行 ..

text1_temp = text_temp;
temporary_line;
text2    = text_temp;

最后我想要以下内容:

text1_temp = text_temp;
temporary_line;
text2      = text_temp;

// 第二个“=”相对于第一个“=”间隔/制表符

如果我将 3 行一起运行 ":Tabularize /=",我会得到:

text1_temp     = text_temp;
temporary_line;
text2          = text_temp;

其中带“=”的两条线相对于中间线的长度对齐

有什么建议吗?

PS:我编辑帖子可能是为了更好地解释需求..

【问题讨论】:

  • 据我所见,您希望将这些行取消表格化。它是否正确?我想,你需要另一个命令,比如 un-tabularize。

标签: regex vim tabular


【解决方案1】:

我不确定如何直接使用Tabular 执行此操作。您也许可以使用 Christian Brabandt 的 NrrwRgn 插件,使用 :NRP 过滤掉带有 = 的行,然后运行 ​​:NRM。这将为您提供一个仅包含 = 行的新缓冲区,因此您可以运行 :tabularize/=/ 然后保存缓冲区(:w:x 等)。

:g/=/NRP
:NRM
:tabularize/=/
:x

最简单的选择可能是使用vim-easy-align,它似乎支持这种开箱即用的行为。使用EasyAlign的例子(使用ga作为EasyAlign的映射你):

gaip=

【讨论】:

  • 解决方案的 vim-easy-align 部分说服了我。
【解决方案2】:

:g/=/s/\t/ /g 之类的简单替换呢?

如果这不起作用,你也可以试试这个::g/=/s/ \+= \+/ = /g

解释: :/g/=/s 将找到所有包含“=”的行,并为它们进行替换。 因此,s/\t/ /g 将用空格替换制表符。这两件事结合起来就可以满足您的需求。

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 2014-10-29
    • 2019-09-10
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2014-12-15
    • 2016-04-25
    相关资源
    最近更新 更多