2012-07-31 9 views
7

Sto creando un file di sintassi personalizzato per vim e per rendere il codice più facile da leggere, voglio dire vim come indentare il codice automaticamente. In questo momento, la mia solita ri-trattino gg=G'' in vim appena si libera di tutti gli spazi bianchi all'inizio di ogni riga:Creazione della sintassi vim personalizzata: è possibile impostare regole di rientro personalizzato personalizzate?

IF (@("X_17") = "X") THEN 
*Make sure only one is selected 
countX = 0; 
IF (@("X_19") = "X") THEN 
countX += 1; 
END 
IF (@("X_20") = "X") THEN 
countX += 1; 
END 
IF (@("X_21") = "X") THEN 
countX += 1; 
END 
... 

Vorrei impostarlo in modo che i commenti (che iniziano con *) non sono rientrato a tutti (non ci sono spazi bianchi all'inizio della riga), ma il resto è rientrato in base a IF e END. Lo stesso codice, opportunamente dentellata (assumere anche il primo IF è all'interno di un ancora più grande IF/blocco END):

IF (@("X_17") = "X") THEN 
*Make sure only one is selected 
     countX = 0; 
     IF (@("X_19") = "X") THEN 
      countX += 1; 
     END 
     IF (@("X_20") = "X") THEN 
      countX += 1; 
     END 
     IF (@("X_21") = "X") THEN 
      countX += 1; 
     END 
     ... 

ho la sintassi come evidenziare istituito, e le parole chiave e funzioni incorporate già parte di un dal file .vim. Ecco l'dal.vim corrente:

http://pastebin.com/PEcSvqM9

C'è un modo per cambiare ciò che ho in modo che il codice verrà automaticamente trattino all'interno dei blocchi/fine se, pur mantenendo tutti i commenti senza spazi bianchi all'inizio ?

Domanda bonus: come posso impostare la piegatura del codice per seguire i blocchi IF/END? In questo momento sto facendo zf2j per piegare questo codice.

+1

I commenti senza commenti sono una scelta molto strana. Non lo preferirei mai in quanto interrompe la lettura del codice, a meno che non abbia avuto altre varianti, ovviamente. – ZyX

+1

Sono completamente d'accordo, ma non è una mia scelta. Gli script di Dal si lamentano se i commenti sono rientrati. – maccam912

risposta

2

È necessario scrivere un plug indentation e inserirlo nella sottodirectory indent. Più è spiegato in

:h 'indentexpr' 

, è ciò che il tuo plugin dovrebbe impostare. Sentiti libero di ottenere esempi da un centinaio di script di rientro distribuiti con Vim. Non ho scritto questo tipo di plugin da solo, quindi non posso dire quale sarà il più utile come esempio.

Per raggruppamento del codice check out

:h :syn-fold 

Ah, e non impostare trattino in un file di sintassi. Non è impossibile, ma non è il posto giusto per questo tipo di lavoro.

Problemi correlati