2010-01-13 2 views
58

Ogni volta che aggiungere un selettore di CSS e premere Enter per definire le proprietà finisce in questo modo:Come posso modificare la dimensione della scheda in Vim?

#selector { 
     property: value; 
} 

(schede 8-spazio)

Come posso configurare Vim fare in questo modo:

#selector { 
    property: value; 
} 

(alette 4-spazio)

+2

Vuoi una scheda di 4 spazi di larghezza? Quattro spazi? O quattro schede di 1 spazio? Sono cose diverse, e tu non sei chiaro. In ogni caso, inizia con la lettura: he ts,: he sw, e: he expandt – abeyer

risposta

51

Ampliando la risposta di Zoul:

Se si desidera impostare Vim per utilizzare le impostazioni specifiche quando si modifica un particolare tipo di file, ti consigliamo di utilizzare autocomandi:

autocmd Filetype css setlocal tabstop=4 

Questo farà in modo che le schede sono visualizzate come 4 spazi. Impostando expandtab, Vim inserirà effettivamente degli spazi (il cui numero è controllato da tabstop) quando si preme il tasto tab; potresti voler usare softtabstop per far funzionare correttamente il backspace (cioè, ridurre il rientro quando è quello che succederebbe se le schede fossero usate, piuttosto che eliminare sempre un char alla volta).

per prendere una decisione pienamente istruiti su come impostare le cose, è necessario leggere documenti Vim su tabstop, shiftwidth, softtabstop e expandtab. Il bit più interessante si trova sotto expandtab (:help 'expandtab):

Ci sono quattro modi principali per utilizzare schede in Vim:

  1. tenere sempre 'tabstop' a 8, impostare 'softtabstop' e ' shiftwidth 'a 4 (o 3 o qualsiasi altra cosa si preferisce) e utilizzare' noexpandtab '. Quindi Vim utilizzerà una combinazione di schede e spazi, ma digitando e si comporterà come una scheda appare ogni 4 (o 3) caratteri.

  2. Impostare "tabstop" e "shiftwidth" in base alle proprie preferenze e utilizzare "expandtab". In questo modo inserirai sempre spazi. La formattazione non verrà mai incasinata quando viene modificato "tabstop".

  3. Impostare "tabstop" e "shiftwidth" in base alle proprie preferenze e utilizzare un | modeline | per impostare questi valori quando si modifica nuovamente il file. Funziona solo quando si utilizza Vim per modificare il file.

  4. Impostare sempre "tabstop" e "shiftwidth" sullo stesso valore e "noexpandtab". Questo dovrebbe quindi funzionare (solo per i primi indent) per qualsiasi impostazione di tabstop utilizzata dalle persone. Potrebbe essere bello avere schede dopo il primo non vuoto inserito come spazi se lo fai però. In caso contrario, i commenti allineati saranno errati quando viene modificato "tabstop".

+0

Inoltre, non preoccuparti troppo di cambiare idea dopo ... vedi ': help retab' (controlla la! Variante). –

82
:set tabstop=4 
:set shiftwidth=4 
:set expandtab 

Inserirà quattro spazi anziché un carattere di tabulazione. Gli spazi sono un po 'più "stabili", il che significa che il testo indentato con gli spazi apparirà lo stesso nel browser e in qualsiasi altra applicazione.

+21

Sì, ma le schede sono semantiche (ogni scheda indica 1 livello di indentazione), mentre gli spazi sono puramente di presentazione. In altre parole, l'utilizzo delle schede consente ad altre persone che visualizzano il codice di visualizzarsi per quanto ampio con cui si trovano a proprio agio, mentre gli spazi non lo consentono. –

+1

Nota che se preferisci ** '>' ** e ** '<' ** per spostare il testo alla stessa distanza del tasto ** tab ** -, puoi semplicemente ': set shiftwidth = 0' nel tuo vimrc e dimenticatene per sempre, perché questo dice vim che vuoi sempre che corrisponda a 'tabstop'. – SeldomNeedy

3

Se avete bisogno di cambiare dimensioni, spesso e non si desidera associare ad un determinato tipo di file è possibile avere comandi predefiniti sul file .vimrc per passare rapidamente le preferenze:

nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR> 
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR> 

Questo mappa due diversi gruppi di dimensioni per i tasti \ t e \ m. Puoi riassociare ciò a qualsiasi tasto desideri.

33

per rendere il cambiamento per una sessione, utilizzare questo comando:

:set tabstop=4 

per rendere il cambiamento permanente, aggiungerlo alla ~/.vimrc o ~/.vim/vimrc:

set tabstop=4 

Questo avrà effetto su tutti i file, non solo css. Per effetto solo file CSS:

autocmd Filetype css setlocal tabstop=4 

come indicato in Michał's answer.

+1

se si desidera che la scheda funzioni come quattro spazi, è necessario aggiungere anche le altre righe nella risposta @Zoul al .vimrc; cioè aggiungi 'set shiftwidth = 4' e 'imposta expandtab' anche a .vimrc. – qartal

+2

La domanda è "Come posso cambiare la dimensione della scheda in Vim?" – Keith

+1

La migliore risposta qui +1 –

9

Molte delle risposte in questa pagina sono correzioni "monouso" al problema descritto. Significato, la prossima volta che apri un documento con vim, le impostazioni della scheda precedenti torneranno.

Se qualcuno è interessato a cambiare in modo permanente le impostazioni della scheda:

  • find/apertura di un .vimrc - instructions here
  • aggiungere le seguenti righe: (more info here)

    set tabstop=4 
    set shiftwidth=4 
    set expandtab 
    
  • quindi salva il file e prova