2010-03-25 11 views
12

Ultimamente mi sono spostato da TextMate a Vim e mi piace molto l'opzione. Tuttavia, ho un prurito riguardo al modo in cui Vim gestisce il rientro all'interno di parentesi graffe usando la sintassi CSS. Io uso simple_pairs.vim, che può avere o meno qualcosa a che fare con il mio problema, ma non penso, perché le cose funzionano bene in PHP, JavaScript, ecc. Lasciatemi spiegare ...Rientro indentazione con CSS in Vim

Generalmente raggruppo il mio regole CSS di contesto utilizzando il rientro, in questo modo:

ul#nav { 
    margin: 10px; 
} 
    ul#nav li { 
    float: left; 
    margin-right: 4px; 
    } 

Ciò significa che quando digito il mio ul#nav li regola, seguita da { (che inserisce un corrispondente } automaticamente) e premere Invio, voglio che la parentesi graffa di chiusura di essere al stesso livello di indentazione del ul#…, ma invece ho qualcosa del genere:

ul#nav { 
    margin: 10px; 
} 
    ul#nav li { 
} 

Quindi devo riutilizzare manualmente i passaggi aggiuntivi. Come ho detto, fare la stessa cosa in PHP, JavaScript, ecc. Funziona perfettamente. Qualcuno sa come posso risolvere questo? Non riesco a capire abbastanza dei file di definizione della sintassi di Vim per me per essere in grado di capire cosa nel file di sintassi PHP lo fa funzionare e portarlo su quello CSS ... Grazie.

+1

Sospetto che abbia qualcosa a che fare con 'simple_pairs.vim'. Ho provato il tuo esempio sul mio computer (senza 'simple_pairs') e ha funzionato come vuoi che funzioni. – Peter

+0

Ah, hai ragione ... Suppongo che avrei dovuto provarlo prima. Tu (o chiunque altro) hai qualche idea su come risolverlo però? –

+0

Si dovrebbe esaminare [SCSS] (http://sass-lang.com/#nesting) se si è interessati alla selezione dei selettori. – gmeben

risposta

11

ho trovato un ottimo codice di rientro per le parentesi graffe nidificate qui:

https://gist.github.com/762326/bcbd35239db7f26447f1c2323037d20a5219471d

È possibile salvare in .vim/trattino/css.vim e lo farà un lavoro molto migliore di indentazione CSS rispetto al valore predefinito.

Inoltre, funziona anche per i file .less, ma potrebbe essere necessario associarli a quelli nel file .vimrc.

Lo script di github è dello stesso mantainer del css.vim ufficiale, solo 6 anni più recente. Hanno alcune linee diverse.

+0

Grazie, funziona molto bene. – romainl

0

Questo ha a che fare con cindent e smartindent. Uno di questi causa questo comportamento.

ho dimenticato che uno (forse due?), Ma li ho rimosso dal mio file ~/.vimrc, e continuai solo autoindent

2

Ho fatto questo per i file CSS:

au BufEnter *.css set nocindent 
au BufLeave *.css set cindent 

I didn' t avere il set smartindent, ma è possibile aggiungere anche questo.

Questo dice che quando si inserisce un buffer di un file .css, è necessario togliere cindent e si dovrebbe reimpostarlo quando si lascia il buffer.

+2

E se il cindent non è stato impostato dall'inizio? Penso che sia meglio usare setlocal (per influenzare solo il buffer con il file .css) e usare BufRead, BufNewFile per impostarlo quando si apre un file css, ad es. 'au BufRead, BufNewFile * .css setlocal nocindent'. – olsner