Vim 使用表格对齐文本

Vim 使用表格对齐文本,vim,Vim,我在Vim中使用制表插件,并有以下文本: 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:

我在Vim中使用制表插件,并有以下文本:

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”组合在第一列中,而不是分别放在第一列和第三列中。

使用两个制表命令,可以这样做

:Tabularize /[[0-9]*:/l1c0l0
:Tabularize /=
因此,这里基本上使用
[number:
作为分隔符。

或使用Align.vim

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

:AlignCtrl p1
:%Align =
:AlignCtrl
:AlignCtrl p0
:%Align\S\+
:AlignCtrl p1
:%Align=

我觉得应该有一个简单的方法来组合它们,但我没有马上完全弄明白,所以我将把它留到另一天

你好,Sehe,我想知道如何使用tablazize.vim来完成它,但感谢您的回答:)Bernhard,它几乎成功了。然而,最后一行被省略了;它在第一个c中将sram_位连接在一起列。
l1c0l0
在这种情况下可以工作,但如果我的起始索引是3位数字,它将失败。感谢你让我开始;我已经编辑了我的问题以包括这种情况。你的示例在前三行对我很有效。laat最后一行不适合制表所需的表格格式。我看不到一个好的方法来处理这种情况制表。