Rozmiar zakładki Vima po naciśnięciu <Tab> i po zastosowaniu autoindent

17

Postanowiłem zmienić rozmiar zakładki z 4 na 2, bo dlaczego nie? Każdy, kto chce spojrzeć na kod, z pewnością może skorzystać z ich preferencji.

Pytanie jednak.

Jeśli nacisnę klawisz tab, wstawia 2, ale autoindent Vima wciąż ustawia 4. Co mam zmienić, aby uzyskać 2?

Kolejne niezwiązane pytanie: który styl wcięcia jest najlepszy dla języków C i podobnych? Korzystam z 1TBS, ale jest tak wiele do wyboru. Czy któryś z nich jest bardziej profesjonalny czy preferowany?

użytkownik341814
źródło

Odpowiedzi:

13

Spróbuj ustawić shiftwidthtę samą wartość co „ tabstop”. Jeszcze lepiej, jeśli używasz dość najnowszej wersji Vima, ustaw „ shiftwidth0 na 0, a domyślnie cokolwiek tabstop” będzie ustawione.

Heptyt
źródło
Właśnie tego szukałem. Obecnie debatuje między ustawieniem ts2, 4 lub 8
użytkownik341814
Używam 8 na plikach innych niż kod oraz 2 lub 4 w zależności od języka i tego, jak często występuje zagnieżdżanie.
Heptyt
W tej chwili robię tylko C.
user341814,
16

Opcje wcięć Vima

Vim używa głównie 3 ustawień co do rozmiaru wcięcia:

  • tabstop, ts: gdy Vim napotka tabulację w otwieranym pliku, wyświetla tabulację jako spacje {ts} (zobacz pomoc tabstop lub wpisz :help tabstopVim).
  • softtabstop, sts: podczas edycji pliku i naciskania klawisza Tab, Vim używa tego ustawienia do zdefiniowania szerokości wstawionej tabulacji (patrz pomoc softtabstop lub wpisz :help softtabstopVim).
  • shiftwidth, sw: Liczba miejsc Vim używa do wcięć, albo za pomocą rzeczy autoindent lub zwykły >>, <<polecenia. Jak zauważył Heptite, tego właśnie szukałeś w tym konkretnym przypadku. A najnowsze wersje Vima rzeczywiście pozwalają ci nie definiować tej opcji, shiftwidthwówczas przyjmą wartość zdefiniowaną przez tabstop. Całkiem przydatny (patrz pomoc shiftwidth ).

Przykład

Na przykład, jeśli użyjesz następujących ustawień:

set sts=4
set ts=2
set sw=8

Powodują one następujące zachowanie:

  1. Wstawienie tabulacji do pliku spowodowałoby wcięcie o szerokości 4 spacji.
  2. Ponieważ twoja tabstopjest ustawiona na 2, w rzeczywistości byłby to odpowiednik 2 tabel. Jest to dość łatwe do sprawdzenia, wystarczy użyć opcji listi, listcharsaby wyświetlić tabulacje.
  3. Jeśli wcinasz linię za pomocą >>, wcięcie będzie miało szerokość 8 spacji (stąd odpowiednik 4 tabel, opartych na tabstopwartości, tak jak powyżej).

wprowadź opis zdjęcia tutaj

Zalecenia wcięcia Vima (z dokumentacji Vima)

Z tabstoppomocy ( :help tabstopw Vimie):

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

Osobiście używam głównie drugiego rozwiązania z tabelami o szerokości 2 spacji.

set ts=2
set sts=2
set et     "expand tabs to spaces
pabuisson
źródło
-1

Zgodnie z http://vim.wikia.com/wiki/Indenting_source_code polecenie „wcięcie wtyczki typu pliku” spowoduje, że program użyje skryptów wcięcia specyficznych dla typu pliku znajdujących się w podkatalogu wcięcia instalacji Vima. Ta strona stwierdza również, że „cindent” jest używany automatycznie w plikach C i C ++ i że nie trzeba wymagać ręcznego używania tego polecenia.

Nie znam się zbyt dobrze na Vimie, ponieważ używam go tylko do sporadycznej podstawowej edycji tekstu, ale spróbuję ręcznie wydać polecenie „cindent”, aby użyć domyślnego rozmiaru autoindent Vima dla tego kodu. Jeśli to nie zadziała, możesz wypróbować opcję „wcięcie wtyczki typu pliku” i samodzielnie edytować skrypty, aby uzyskać żądane wcięcia.

Kyle
źródło