2012-04-12 21 views
1

Wie kann ich PHP-Code formatieren, die(Re) Formatierung PHP-Code in Vim

class SomeClass 
{ 
    function insideclass() 
    { 


    } 
} 

in diese so aussieht, mit Vim ohne externes Tool?

class SomeClass { 
    function insideclass() { 


    } 
} 

ich streiten bin nicht, dass dies der beste Weg ist, um den Code zu formatieren, aber das ist, was wir im Team folgen.

Bearbeiten: Verweis auf das Snippet-Addon entfernt, was zu einiger Verwirrung über die Frage führte.

Antwort

4

Sie haben zwei nicht zusammenhängende Probleme und Sie werden keine einzigartige Lösung für beide finden.

  1. Sie mögen es nicht, die Standard class Schnipsel.

    Kein Problem. Wenn es nicht bereits vorhanden ist, erstellen Sie ~/.vim/snippets/php.snippets und passen Sie es an die Regeln Ihres Teams an, indem Sie die anderen Antworten befolgen. Snipmate ist nicht intelligent genug, um sich an Ihren Programmierstil anzupassen.

  2. Ein Teil Ihres vorhandenen Codes entspricht nicht Ihren Codierungsregeln.

    Snipmate wird nicht helfen, da sie nur mit Einfügung beschäftigt, nicht Transformation. Sie werden entweder einige externe beautifier oder ein paar Makros benötigen.

    EDIT

    Hier ist ein sehr einfacher Befehl, genau das tut, was Sie auf Ihrem Beispiel wollen. Ich biete keine Garantie dafür, dass es für alles überall funktioniert. Nimm es als naiven Ausgangspunkt.

    :g/^\s*{\s*$/normal kJ 
    
    • :g/pattern wirkt auf alle Linien pattern enthält, siehe :h :global.

    • ^\s*{\s*$ entspricht allen einzelnen { unabhängig von der Anzahl der Leerzeichen zwischen ihnen und dem Anfang der Zeile.

    • normal führt normal Befehle aus, siehe :h :normal.

    • kJ geht eine Zeile und J oins diese Zeile mit der übereinstimmenden Zeile.

    • Fertig.

    EndEdit

+0

Eigentlich war meine Frage eher das zweite Problem. Ich schneide nur Addon als Beispiel. Mein Fehler. Ich habe die Frage jetzt bearbeitet, um sie zu klären. – Sudar

+0

Abgesehen von der Verwendung von Beautifier, gibt es eine Vim-basierte Lösung für das zweite Problem? – Sudar

+0

Keine schlüsselfertige Lösung, die mir bekannt ist. Vielleicht hat jemand ein Skript geschrieben, das auf PHP_Beautifier basiert? Ich weiß es nicht. Es sieht wie ein typischer Anwendungsfall für Makros und Ersetzungen aus. – romainl

2

Warum nicht den Quellcode dieses Addons ändern?

Zum Beispiel ändert diese:

snippet class 
    /** 
    * ${1} 
    */ 
    class ${2:ClassName} 
    { 
     ${3} 
     function ${4:__construct}(${5:argument}) 
     { 
      ${6:// code...} 
     } 
    } 

zu

snippet class 
    /** 
    * ${1} 
    */ 
    class ${2:ClassName}{ 
     ${3} 
     function ${4:__construct}(${5:argument}){ 
      ${6:// code...} 
     } 
    } 
+0

@sberry, war man schneller als ich, gute Arbeit :) – liweijian

+0

modifizierende Ja das Addon auf jeden Fall eine Option. Ich versuche nur zu sehen, ob es überhaupt möglich ist, Code von einem Stil in einen anderen zu konvertieren. – Sudar

0

Al der snipmate Schnipsel in einem Verzeichnis gespeichert werden. Gehe in dieses Verzeichnis und bearbeite die gewünschte Datei.

Die Direcorty wird im Verzeichnis vim gespeichert und snippets aufgerufen. Dort sehen Sie eine php.snippets Datei. Gehe zu dieser Datei und in Zeile 70 kannst du das Snippet für die Klasse bearbeiten.