Po pierwsze, nie używaj Tabklucza w Vimie do ręcznego wcięcia. Vim ma parę poleceń w trybie wstawiania do ręcznego zwiększania lub zmniejszania wcięcia. Te polecenia to Ctrl-Ti Ctrl-D. Polecenia te przestrzegać wartości tabstop
, shiftwidth
aexpandtab
, i utrzymywać właściwą mieszaninę przestrzeni i zakładek (maksymalna liczba zakładek następuje dowolny niezbędną liczbę spacji).
Po drugie, te ręczne klucze wcięcia nie muszą być i tak bardzo używane, jeśli używasz automatycznego wcięcia.
Jeśli Ctrl-Tzamiast TabCi przeszkadzać, możesz to zmienić:
:imap <Tab> ^T
Możesz także wykonać remap, Shift-Tababy wykonać Ctrl-Ddeindent:
:imap <S-Tab> ^D
^ T i ^ D to dosłowne znaki sterujące, które można wstawić jako Ctrl-VCtrl-T.
Po wprowadzeniu tego odwzorowania nadal możesz wpisać dosłowny Tab w buforze za pomocą Ctrl-VTab. Pamiętaj, że jeśli to zrobisz, nawet jeśli :set expandtab
jest włączony, otrzymasz nierozwinięty znak tabulacji.
Podobny efekt do <Tab>
mapy uzyskuje się przy użyciu :set smarttab
, co również powoduje, że backspace na początku linii zachowuje się elegancko.
W smarttab
trybie, gdy nie Tabjest używany na początku linii, nie ma specjalnego znaczenia. To różni się od mojego powyższego mapowania Tabna Ctrl-T, ponieważCtrl-T użyte gdziekolwiek w linii (w trybie wstawiania) zwiększy wcięcie tej linii.
Inne przydatne mapowania mogą być:
:map <Tab> >
:map <S-Tab> <
Teraz możemy robić rzeczy takie jak zaznaczanie niektórych linii i naciskać, Tababy je wciąć. Lub naciśnij Tabdwukrotnie linię (w trybie komend), aby zwiększyć wcięcie.
Jeśli używasz odpowiednich poleceń zarządzania wcięcia, to wszystko jest kontrolowane przez trzy parametry: shiftwidth
, tabstop
i expandtab
.
Ten shiftwidth
parametr kontroluje rozmiar wcięcia; jeśli chcesz cztery wcięcia spacji, użyj :set shiftwidth=4
lub skrót :set sw=4
.
Jeśli tylko to zostanie zrobione, wcięcie zostanie utworzone przy użyciu kombinacji spacji i tabulatorów, ponieważ noexpandtab
jest to ustawienie domyślne. Posługiwać się:set expandtab
. Powoduje to, że znaki tabulacji, które wpisujesz do bufora, rozszerzają się w spacje, a wcięcia zarządzane przez Vima używają tylko spacji.
Kiedy expandtab
jest włączony i jeśli zarządzasz swoim wcięciem poprzez wszystkie odpowiednie mechanizmy Vima, wartość parametru tabstop
staje się nieistotna. Kontroluje wygląd zakładek, jeśli zdarzają się one w pliku. Jeśli masz, set tabstop=8 expandtab
a następnie podkradniesz twardy plik do pliku za pomocą Ctrl-VTab, spowoduje to wyrównanie do następnej 8-kolumnowej pozycji tabulacji, jak zwykle.