vim выровнять столбцы, используя Align или Tabularize (Verilog) - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь использовать 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;

Как видите, иногда перед именем переменной будут квадратные скобки, а иногда - нет. Комментарии могут быть посередине, я бы хотел, чтобы их игнорировали. Я хочу сохранить пространство перед вводом / выводом. Я попробовал некоторое регулярное выражение, но не смог сделать это.

1 Ответ

0 голосов
/ 14 ноября 2018

Хорошо, мне удалось сделать это с помощью функции easy-align (спасибо Doktor OSwaldo).Я использовал предварительные примеры: https://github.com/junegunn/vim-easy-align/blob/master/EXAMPLES.md

Я взял этот код и добавил его в ~ / .vim / autoload / easy_align.vim (взято из EXAMPLES.md выше).

let g:easy_align_delimiters['d'] = {
\ 'pattern': ' \ze\S\+\s*[;=]',
\ 'left_margin': 0, 'right_margin': 0
\ }

Я не полностью понимаю шаблон, поэтому я не буду пытаться объяснить его.Но это работает:)

...