使用Tabularize对齐文本

时间:2012-03-30 07:23:20

标签: vim

我在Vim中使用Tabularize插件并具有以下文本:

reg [321:123] ip_addr=32'h12345678;
reg [15:0] trie_data=16'h9abc;
reg [2:0] select=3'h5;

wire [3:0] nibble;
wire sram_bit;

我希望以这种方式对齐:

reg  [321:123] ip_addr   = 32'h12345678;
reg   [15:0]   trie_data = 16'h9abc;
reg    [2:0]   select    = 3'h5;

wire   [3:0]   nibble;
wire           sram_bit;

用语言说:

  • 在第一栏中左对齐reg / wire
  • 中心对齐位宽(如果存在)沿':'
  • 第三列中的左对齐信号名称
  • =第4栏中的标志
  • 左对齐第5列中的初始值。

到目前为止,我已经按顺序尝试了以下内容:

:Tabularize /[[0-9]*:/l1r0l0
:Tabularize /:[0-9]*]/l0l1l0
:Tabularize /=

但是它在第一列中组合了'wire'和'sram_bit',而不是分别将它放在第一列和第三列中。

2 个答案:

答案 0 :(得分:2)

使用两个Tabularize命令可以像这样完成

:Tabularize /[[0-9]*:/l1c0l0
:Tabularize /=

所以在这里你基本上使用[number:作为分隔符。

答案 1 :(得分:1)

或使用Align.vim

:AlignCtrl <>
:AlignCtrl p0
:%Align \S\+

:AlignCtrl p1
:%Align =

我觉得应该有一种简单的方法来组合这些,但我没有立刻弄明白,所以我会把它留下一天