2010-12-01 11 views
3

wenn JavaScript Literale Objekt eingeben, wie zum Beispiel:wie vim zu stoppen Javascript Objektschlüssel zu Spalte bewegt 0

foo = { 
    bar: baz 
}; 

vim denkt „bar“ ist ein C-Stil-Label und verschiebt sie in Spalte 0

Wie höre ich damit auf?

+0

Ich denke, es ist die Art und Weise zu tun ':' ist für Schalter verwendet. Es dedents es, bewegt es nicht in Spalte 0. Es zeigt sich nicht für einfache Strukturen, sondern nur für komplexere, die ich gefunden habe (und manchmal scheint es einfach nicht passieren ... wie jetzt, wenn ich es versuche um es zu reproduzieren!). Was auch immer es ist, ich habe mich auch darüber geärgert und gerade gelernt damit zu leben ... hoffe jemand hat eine Antwort dafür :-) –

+0

Das hat mich schon immer geärgert. Aufreizend die [cinoptions] (http://vimdoc.sourceforge.net/htmldoc/indent.html#cinoptions-values) Einstellung sieht aus wie es tun, was wir wollen, aber es ist nur bewusst genug von C-ähnliche Syntax nur zu gehorchen 'cino =: 1s, wenn es sich tatsächlich um eine Case-Bezeichnung in einer switch-Anweisung handelt, leider nicht für JS-Objektliterale ... – maerics

Antwort

3

Versuchen :set cinkeys-=:.

Label-Einzug kann nicht durch cinoptions gesteuert werden. Zitat aus :help indent

Vim eine Zeile in Spalte 1 setzt, wenn:

  • Es beginnt mit '#' (Präprozessordirektiven), wenn 'cinkeys' enthält '#'.
  • Es beginnt mit einem Etikett (ein Stichwort, gefolgt von ‚:‘, andere als „Fall“ und „default“).
  • Jede Kombination von Vertiefungen bewirkt, dass die Linie weniger als 0 Vertiefung haben.

(Emphasis Mine)

jedoch cinkeys gibt an, welche Tasten Trigger im Einfügemodus reindenting. Durch das Entfernen von : von cinkeys wird vim beim Einfügen von : nicht länger reindent.

Aber beachten Sie, dass manuelle Neueinzug über =wird immer noch brechen Sie Ihr Layout.