Выровняйте по одному из двух шаблонов в Tabular.vim - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь украсить свои операторы Postgres SQL таким образом:

 CREATE TABLE foo (
     id bigserial primary key,
     fid_1 bigserial primary key,      
     fid_2 bigserial primary key,      
     FOREIGN KEY (fid_1) REFERENCES fee,
     FOREIGN KEY (fid_1) REFERENCES fum,
     CONSTRAINT valid_fid_1 CHECK(fid_1 > 9000),
     CONSTRAINT valid_fid_2 CHECK(fid_2 > 9000)
 );

В это

 CREATE TABLE foo (
     id                                bigserial primary key,
     fid_1                             bigserial primary key,
     fid_2                             bigserial primary key,
     FOREIGN KEY (fid_1)               REFERENCES fee,
     FOREIGN KEY (fid_1)               REFERENCES fum,
     CONSTRAINT valid_fid_1            CHECK(fid_1 > 9000),
     CONSTRAINT valid_fid_2            CHECK(fid_2 > 9000)
 );

Я могу преобразовать их независимо, введя эти команды

  • Первые 3 строки '<,'> Tab /^\s*\w*/l31
  • Следующие две строки '<,'> Tab /REFERENCES/l15c1
  • Последние две строки '<,'> Tab /CHECK/l12c1

Это имеет два недостатка, которые ему требуютсятри действия, и я должен вручную рассчитать расстояние.Есть ли способ поиска для всех трех скороговорок одновременно, например '<,'> Tab /^\s*\w*|REFERENCES|CHECK?

1 Ответ

0 голосов
/ 05 марта 2019

Вам нужно экранировать ветки вашего паттерна (| -> \|) или использовать \v для очень магии.

Это работает с вашим примером:

:Tabularize /^\s*\%(CONSTRAINT\s\+\w\+\|FOREIGN KEY.*)\|\l\w\+\)\zs.*/

Смотрите :h /magic, чтобы узнать больше о побеге

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...