Php 使用vim';s将插件列表化,使其仅与第一次出现的分隔符匹配

Php 使用vim';s将插件列表化,使其仅与第一次出现的分隔符匹配,php,mysql,vim,format,Php,Mysql,Vim,Format,由于找不到一个基于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 进入这个 CREAT

由于找不到一个基于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
进入这个

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
但是如果我这样做的话,我会得到

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

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

为了避免表格化重复模式以匹配其他字段,您必须 锚定它。在这种情况下,在开始时更有意义,因此您可以尝试 大概是这样的:

:Tab /^\s*\w*
您的行中只有一个字段具有此模式。但是要小心,它会被破坏的 在您的示例中可能不会发生,但这与大多数行相匹配, 因此,最好只在一个范围内应用制表(或
明确地或通过在视觉模式下选择行)。

谢谢。虽然不是我的问题,但我将此重新映射放在.vimrc文件中,通过直观地选择行并键入
mal
M
ysql
AL
ign)
vnoremap-mal:Tabularize/^\s*\w*/l2
,将列与2个pad sapce快速对齐,@puk。对不起,我显然错过了两个空格。此外,如果总是在缩进行上执行此操作,则可以使用
/^\s\+\w\+
,这将减少错误猜测行的数量。然后,您可以应用它,而无需先进行可视化选择,并保存一些击键:-)感谢您的提示,但它不适用于mySQL创建表b/c我想对齐列(例如,
ID
GROUPNAME
ACTIVE
),但不适用于其他关键字,如
主键
外键