vim使用align或表格(Verilog)对齐列

vim使用align或表格(Verilog)对齐列,vim,alignment,verilog,Vim,Alignment,Verilog,我尝试使用Align或Tabularize获取以下代码: // UDW input [UDW_WIDTH-1:0] udw_data; input [TYPE_WIDTH-1:0] udw_type; input udw_valid; output udw_ready; // UniClkPktGen input [UTW_DATA_W-1:0]

我尝试使用Align或Tabularize获取以下代码:

   // UDW
   input  [UDW_WIDTH-1:0]     udw_data;
   input [TYPE_WIDTH-1:0]     udw_type;
   input                      udw_valid;
   output                     udw_ready;
   // UniClkPktGen
   input [UTW_DATA_W-1:0]     utw_data_in;
   input                      utw_valid_in;
   input [FREQOFFSET_W-1:0]   freqOffset;
   input [ACCDELAY_W-1:0]     accDelay;
   // RIF                     
   input [31:0]                    rif_add_bus;
   input [31:0]                    rif_data_wr;
   input [3:0]                  rif_byte_en;
   input                         rif_wr;
   input                         rif_rd;
   output [31:0]                   rif_data_rd;
   output                        rif_ack;
与此一致:

   // UDW
   input  [UDW_WIDTH-1:0]     udw_data;
   input  [TYPE_WIDTH-1:0]    udw_type;
   input                      udw_valid;
   output                     udw_ready;
   // UniClkPktGen
   input  [UTW_DATA_W-1:0]    utw_data_in;
   input                      utw_valid_in;
   input  [FREQOFFSET_W-1:0]  freqOffset;
   input  [ACCDELAY_W-1:0]    accDelay;
   // RIF                     
   input  [31:0]              rif_add_bus;
   input  [31:0]              rif_data_wr;
   input  [3:0]               rif_byte_en;
   input                      rif_wr;
   input                      rif_rd;
   output [31:0]              rif_data_rd;
   output                     rif_ack;
如您所见,有时变量名前会有方括号,有时则不会。评论可能是在中间,我希望他们被忽略。我想在输入/输出之前保留空格。
我尝试了一些正则表达式,但没能做到。

好的,我已经用easy align做到了(谢谢Doktor OSwaldo)。 我使用了一些高级示例:

我将这段代码添加到~/.vim/autoload/easy_align.vim(取自上面的EXAMPLES.md)

我不完全理解这个模式,所以我不会试图解释它。
但是它是有效的:)

如果你可以选择其他插件,那么你总是可以使用
visualblock
来移动文本。我将尝试使用easy align。使用VisualBlock不是自动的(这就是我目前正在做的),我正在尝试找到一种快速的方法。我正在处理的所有文件中都有很多这样的行。完全平凡。模式与模式(
\ze
)前面的最后一个空格相匹配
\S\+\S*[;=]”
至少匹配一个非空白字符序列(
\S\+
),后跟可选空白(
\S*
),然后再跟一个
=
[;=]
)。有关更多帮助,请参见
:h/\ze
:h/\+
:h/\S
/\S
:h/collection
let g:easy_align_delimiters['d'] = {
\ 'pattern': ' \ze\S\+\s*[;=]',
\ 'left_margin': 0, 'right_margin': 0
\ }