我正在尝试美化我的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)
);
我可以通过发出以下命令来独立转换它们
'<,'> Tab /^\s*\w*/l31
'<,'> Tab /REFERENCES/l15c1
'<,'> Tab /CHECK/l12c1
这有两个缺点,需要三个动作,我必须手动计算间距。有没有办法像'<,'> Tab /^\s*\w*|REFERENCES|CHECK
一样同时搜索所有三个模式?
答案 0 :(得分:1)
您需要转义模式分支(|
-> \|
)或使用\v
来达到神奇的效果。
这适用于您的示例:
:Tabularize /^\s*\%(CONSTRAINT\s\+\w\+\|FOREIGN KEY.*)\|\l\w\+\)\zs.*/
有关逃逸的更多信息,请参见:h /magic