Vim: tabulator kontra spacje

Gdzie odkrywam swoje pozorne zrozumienie konfiguracji Vima, a czytelnika namawiam do wspólnej wyprawy po zawiłościach tabulacji i wcięć.

tabs vs. spaces

Ten problem wydawał mi się niespecjalnie istotny, aż do niedawna gdy analizowałem, jak mam ustawić swojego vima do współpracy w naprawdę dużym projekcie open source.

Gdy pracuję nad projektami służbowo, mam oddzielne środowiska, ostatnio z „rozwijaniem” do czterech spacji.

Gdy pracuję sam używam wcięć o szerokości dwóch spacji, naciśnięcia taba rozwijam automatycznie do spacji.

Zupełnie przypadkiem pierwszy projekt OS, w którym uczestniczyłem miał takie samo ustawienie. Chodzi o exercism.org

Jak to skonfigurować w Vim?

 set tabstop =2
 set softtabstop =2
 set shiftwidth =2
 set expandtab
 set autoindent

Powyżej to mój standardowy wpis w pliku ~/.vimrc.
Opcja tabstop oznacza ile spacji reprezentuje pojedyńczy znak tabulacji w tekście.
Wydaje się, że jest to proste w interpretacji, ale nic bardziej mylnego. Ja też uległem takiemu wrażeniu, niedokładnie czytając dokumentację. Jak chcesz możesz już teraz kliknąć w tę opcję i dokładnie przeczytać jej opis.
Opcja softtabstop domyślnie jest ustawiona na 0 i wtedy tabstop się tylko liczy. Niemniej, nie do końca rozumiejąc do czego to służy, ustawiałem to na tyle samo, co tabstop, bo dla wcięć działało jak chciałem.
Trzecia opcja działająca wspólnie z pozostałymi i ważna dla wcięć, to expandtab.
To opcja typu wł./wył., którą wyłącza się set noexpandtab i ustawiona powoduje, że naciśnięcie tab wstawia spacje w to miejsce.
Ile spacji? Tyle ile wynosi tabstop, chyba, że softtabstop jest różne od zera, to wtedy na softtabstop.

No właśnie. Te opcje działają wspólnie, a jeszcze nie wspomnieliśmy o shiftwidth i opcjach *indent!

Podsumowując ten fragment. Powyższa konfiguracja jest defensywna i wynika tylko z potrzeby wcięć o wielkości dwóch spacji na poziom. Utrudnia też współpracę z innymi, którzy używają innych ustawień, w szczególności z tabami.

Spróbuję w następnym poście poeksperymentować z takimi ustawieniami i z chęcią też poczytam komentarze na ten temat, bo jestem ciekaw jak inni to ustawiają.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *