Come posso modificare le dimensioni della scheda in Vim?


172

Ogni volta che aggiungo un selettore in CSS e premo Enterper definire le proprietà, finisce così:

#selector {
        property: value;
}

(Schede a 8 spazi)

Come posso configurare Vim per renderlo così:

#selector {
    property: value;
}

(Schede a 4 spazi)


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

Risposte:


102

Espandendo la risposta di Zoul:

Se vuoi configurare Vim per usare impostazioni specifiche quando modifichi un particolare tipo di file, ti consigliamo di usare i autocomandi:

autocmd Filetype css setlocal tabstop=4

Questo renderà le schede visualizzate come 4 spazi. L'impostazione expandtabfarà sì che Vim inserisca effettivamente gli spazi (il numero di essi è controllato da tabstop) quando si preme tab; potresti voler usare softtabstopper far funzionare correttamente il backspace (cioè, ridurre il rientro quando è quello che succederebbe se le schede dovessero essere usate, piuttosto che eliminare sempre un carattere alla volta).

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

Esistono quattro modi principali per utilizzare le schede in Vim:

  1. Tieni sempre "tabstop" su 8, imposta "softtabstop" e "shiftwidth" su 4 (o 3 o quello che preferisci) e usa "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. Imposta 'tabstop' e 'shiftwidth' su quello che preferisci e usa 'expandtab'. In questo modo inserirai sempre spazi. La formattazione non verrà mai incasinata quando si cambia 'tabstop'.

  3. Imposta 'tabstop' e 'shiftwidth' su quello che preferisci e usa una | 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 rientri iniziali) per qualsiasi impostazione di tabstop utilizzata dalle persone. Tuttavia, potrebbe essere utile avere schede dopo il primo non vuoto inserite come spazi. Altrimenti i commenti allineati saranno errati quando si cambia 'tabstop'.


Inoltre, non preoccuparti troppo di cambiare idea in seguito ... vedi :help retab(controlla la variante!).
Michał Marczyk,

L'uso di autocmd è complementare all'utilizzo di .vimrc o di un'alternativa?
Josh Desmond,

224
:set tabstop=4
:set shiftwidth=4
:set expandtab

Ciò 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.


83
Sì, ma le schede sono semantiche (ogni scheda indica 1 livello di rientro), mentre gli spazi sono puramente presentativi. O in altre parole, l'uso delle schede consentirà ad altre persone che visualizzano il tuo codice di mostrare per quanto ampie siano a loro agio, mentre gli spazi non lo permetterebbero.
K Prime

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

132

Per apportare la modifica per una sessione, utilizzare questo comando:

:set tabstop=4

Per rendere permanente la modifica, aggiungila a ~/.vimrco ~/.vim/vimrc:

set tabstop=4

Questo influenzerà tutti i file, non solo i CSS. Per influire solo sui file CSS:

autocmd Filetype css setlocal tabstop=4

come affermato nella risposta di Michał .


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

7
La domanda è "Come posso modificare le dimensioni della scheda in Vim?"
Keith,

Ecco come lo farei. E per garantire che ~/.vimrcsia sempre eseguito il backup, di solito salvo il file nella mia cartella Dropbox, quindi creo un collegamento sym al desktop:ln -s /home/myfolder/Dropbox/.vimrc ~
incantare il

41

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

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


11
Ciò inserisce spazi, non tabulazioni.
Supernovah,

5
@Supernovah puoi rimuovere "expandtab", per ottenere schede
kommradHomer

28

Come one-liner in vim :

:set tabstop=4 shiftwidth=4 expandtab

Per un'installazione permanente , aggiungi queste righe a ~ / .vimrc :

set tabstop=4
set shiftwidth=4
set expandtab

6

AGGIORNARE

Se lavori in un particolare progetto, ti consiglio vivamente di usare editorconfig .

Ti permette di definire un .editorconfig file nella radice del tuo repository definendo il rientro che vuoi usare per ogni tipo di file nel tuo repository.

Per esempio:

root = true

[*.css]
charset = utf-8
indent_style = space
indent_size = 4

[*.js]
charset = utf-8
indent_style = space
indent_size = 2

C'è un plugin vim che configura automaticamente vim in base al file di configurazione per il file aperto.

Inoltre, il .editorconfig file è automaticamente supportato su molti altri IDE ed editor, quindi è l'opzione migliore per collaborare tra utenti con ambienti diversi.

RISPOSTA ORIGINALE

Se devi cambiare spesso le dimensioni e non vuoi associarlo a un tipo di file specifico, puoi avere comandi predefiniti sul tuo file .vimrc per cambiare 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 associa due diversi set di dimensioni ai tasti \ t e \ m. Puoi associarlo a qualsiasi chiave tu voglia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.