2012-04-23 9 views
3

LinuxベースのSQL美化器を見つけられず、mySQLスニペットをパイプすることができないので、mySQLコードを単純に表にするだけで解決します。私は、このオンにする:このvimのTabularizeプラグインを使用して、デリミタの最初の出現箇所のみを照合します。

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 

をしかし、私は: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 

がどのように私は唯一の識別子の後の最初のスペースに合わせない取得(または代わりに、コマンドラインSQL beautifier =はどこですか?

答えて

4

他のフィールドと一致するようにパターンを繰り返すことを回避するには、 を固定する必要があります。

:Tab /^\s*\w* 

あなたの行に、このパターンを持つ唯一のフィールドがあります:あなたはこのような な何かを試すことができますので、初めに、この場合には、より理にかなっています。しかし、あなたの例では が発生しないかもしれませんが、これは大多数の行、 に一致します。したがって、範囲内でTabularizeを明示的に適用すると良いでしょう( 明示的にまたはビジュアルモードで線を選択してください) 。

+0

ありがとうございました。私の質問ではありませんが、この再マッピングを.vimrcファイルに入れて、列を視覚的に選択し、 ' mal'(' M'ysql 'AL'ign)' vnoremap mal:Tabularize/^ \ s * \ w */l2 ' – puk

+0

これは@pukです。そして、申し訳ありませんが、私は明らかに2スペースのパディングを見逃しました。また、インデントされた行でこれを行う場合は、誤った推測行の数を減らす '/^\ s \ + \ w \ +'を使うことができます。次に、最初に視覚的に選択することなくそれを適用し、いくつかのキーストロークを保存することができます:-) – sidyll

+0

ヒントをありがとうが、それはmySQLのテーブルを作成するためには機能しませんb/c私は、 'ID'、' GROUPNAME'、 'ACTIVE'など)、' PRIMARY KEY'や 'FOREIGN KEY'のような他のキーワードでは使用できません – puk

関連する問題