使用 vim 的 Tabularize 插件仅匹配第一次出现的分隔符

puk*_*puk 4 php mysql format vim

由于无法找到一个基于 Linux 的 SQL 美化器来将我的 mySQL 代码片段通过管道传输到,我将满足于简单地将我的 mySQL 代码制成表格。我想把这个:

CREATE TABLE IF NOT EXISTS GROUP
(
   ID INT NOT NULL AUTO_INCREMENT,
   GROUPNAME VARCHAR(15) UNIQUE,
   ACTIVE BOOLEAN DEFAULT TRUE,

   PRIMARY KEY(ID)
)ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)

进入这个

CREATE TABLE IF NOT EXISTS GROUP
(
   ID         INT NOT NULL AUTO_INCREMENT,
   GROUPNAME  VARCHAR(15) UNIQUE,
   ACTIVE     BOOLEAN DEFAULT TRUE,

   PRIMARY KEY(ID)
)ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)

但如果我这样做:Tabularize /\我会得到

CREATE TABLE IF NOT EXISTS GROUP
(
        ID          INT           NOT        NULL         AUTO_INCREMENT,
        USERID      INT           NOT        NULL,
        GROUPNAME   VARCHAR(15)   UNIQUE,
        ACTIVE      BOOLEAN       DEFAULT    TRUE,

        PRIMARY     KEY(ID),
        FOREIGN     KEY           (USERID)   REFERENCES   USER(ID)
)ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)

如何仅在标识符后的第一个空格上对齐(或者在哪里可以找到命令行 SQL beautifier = )?

sid*_*yll 5

为了避免 Tabularize 重复您的模式来匹配其他字段,您必须对其进行锚定。在这种情况下,一开始更有意义,因此您可以尝试\n这样的操作:

\n\n
:Tab /^\\s*\\w*\n
Run Code Online (Sandbox Code Playgroud)\n\n

您的行中只有一个字段具有此模式。但要小心 \xe2\x80\x94 它\n可能不会发生在您的示例中,但这与绝大多数行匹配,\n因此仅在一个范围内应用 Tabularize 可能是一个好主意(\n明确地或通过选择视觉模式下的线条)。

\n