2010-01-13 18 views
58

każdym razem dodam selektora CSS i pędzę Enter zdefiniowanie właściwości kończy się tak:Jak zmienić rozmiar tabulatora w Vimie?

#selector { 
     property: value; 
} 

(tabs 8-space)

Jak mogę skonfigurować Vima aby tak:

#selector { 
    property: value; 
} 

klapki (4) przestrzeń

+2

Czy chcesz jedną zakładkę o szerokości 4 spacji? Cztery przestrzenie? Lub cztery zakładki o 1 szerokości przestrzeni? Są różne rzeczy, a ty nie jesteś czysty. W każdym razie zacznij od czytania: he ts,: on sw, i: on expandt – abeyer

Odpowiedz

51

Rozszerzając Zoul za odpowiedź:

Jeśli chcesz konfiguracji vim używać określonych ustawień podczas edycji określonego typu pliku, będziemy chcieli użyć autokomend:

autocmd Filetype css setlocal tabstop=4 

to zrobi to tak, że karty są wyświetlane jako 4 spacje. Ustawienie expandtab spowoduje, że Vim wstawi spacje (liczba kontrolowanych przez tabstop) po naciśnięciu klawisza tab; możesz użyć funkcji softtabstop, aby backspace działał poprawnie (to znaczy zmniejsz wcięcie, gdy to się stanie, jeśli karty będą używane, zamiast zawsze usuwać po jednym znaku na raz).

Aby w pełni świadomą decyzję, w jaki sposób ustawić rzeczy, trzeba czytać dokumenty Vima na tabstop, shiftwidth, softtabstop i expandtab. Najciekawszym nieco znajduje się pod expandtab (:help 'expandtab):

Istnieją cztery główne sposoby korzystania z karty w vim:

  1. Zawsze trzymają 'tabstop' na 8, set 'softtabstop' i ' shiftwidth 'to 4 (lub 3 lub cokolwiek wolisz) i użyj' noexpandtab '. Następnie Vim użyje kombinacji kart i spacji, ale wpisując i będzie zachowywał się jak karta pojawia się co 4 (lub 3) znaki.

  2. Ustaw "tabstop" i "shiftwidth" na dowolne i użyj "expandtab". W ten sposób zawsze wstawisz spacje. Formatowanie nigdy nie będzie pomieszane, gdy zmieni się "tabstop".

  3. Ustaw "tabstop" i "shiftwidth" na dowolne i użyj | modeline | aby ustawić te wartości podczas edycji pliku ponownie. Działa tylko przy użyciu Vima do edycji pliku.

  4. Zawsze ustawiaj "tabstop" i "shiftwidth" na tę samą wartość i "noexpandtab". To powinno wtedy działać (tylko dla początkowych wcięć) dla dowolnego ustawienia tabulatora, którego używają ludzie. Dobrze byłoby mieć zakładki po pierwszym niepustym wstawieniu jako spacje, jeśli to zrobisz. W przeciwnym razie wyrównane komentarze będą niepoprawne po zmianie tabulacji.

+0

Nie martw się też zbytnio o możliwość późniejszej zmiany zdania ... zobacz ': help retab' (sprawdź wariant!). –

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

Spowoduje to wstawienie czterech spacji zamiast tabulatora. Spacje są trochę bardziej "stabilne", co oznacza, że ​​tekst z wcięciami spacji będzie wyświetlany w przeglądarce i każdej innej aplikacji.

+21

Tak, ale tabulacje są semantyczne (każda zakładka oznacza 1 warstwę wcięcia), a spacje są czysto prezentacyjne. Innymi słowy, używanie kart pozwala innym osobom wyświetlającym Twój kod wyświetlać go z jak największą szerokością, podczas gdy spacje na to nie pozwalają. –

+1

Pamiętaj, że jeśli wolisz ** '>' ** i ** '<' **, aby przesunąć tekst w tej samej odległości co ** tab **, możesz po prostu ': ​​ustawić shiftwidth = 0' w swoim vimrc i zapomnij o tym na zawsze, ponieważ mówi to, że zawsze chcesz, aby pasował do 'tabstop'. – SeldomNeedy

3

Jeśli trzeba zmienić rozmiary i często nie chcą wiązać się to do konkretnego typu plików może trzeba szybko przełączać ustawienia predefiniowane komendy na pliku .vimrc:

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

Powoduje mapowanie dwóch różnych zestawów rozmiarów do klawiszy \ ti \ m. Możesz ponownie powiązać to z dowolnymi kluczami.

33

Aby dokonać zmiany na jedną sesję, użyj polecenia:

:set tabstop=4 

dokonać zmiany na stałe, dodaj go do ~/.vimrc lub ~/.vim/vimrc:

set tabstop=4 

ta będzie dotyczyć wszystkich plików, a nie tylko css. Aby wpływać tylko na pliki css:

autocmd Filetype css setlocal tabstop=4 

zgodnie z Michał's answer.

+1

jeśli chcesz, aby zakład funkcjonował jako cztery spacje, konieczne jest dodanie pozostałych linii w odpowiedzi @Zoul do pliku .vimrc; to znaczy dodaj 'set shiftwidth = 4' i 'set expandtab' również do .vimrc. – qartal

+2

Pytanie brzmi "Jak zmienić rozmiar tabulatora w Vimie?" – Keith

+1

Najlepsza odpowiedź tutaj +1 –

9

Kilka odpowiedzi na tej stronie to poprawki "jednorazowego użytku" do opisanego problemu. Znaczenie: przy następnym otwieraniu dokumentu za pomocą vim powrócą poprzednie ustawienia tabulatora.

Jeśli ktoś jest zainteresowany trwale zmieniając ustawienia zakładka:

  • find/otwórz .vimrc - instructions here
  • dodać następujące wiersze: (more info here)

    set tabstop=4 
    set shiftwidth=4 
    set expandtab 
    
  • następnie zapisz plik i przetestuj