Innanzitutto, non utilizzare la Tabchiave in Vim per il rientro manuale. Vim ha una coppia di comandi in modalità insert per aumentare o diminuire manualmente la quantità di rientro. Quei comandi sono Ctrl-Te Ctrl-D. Questi comandi osservano i valori di tabstop
, shiftwidth
e expandtab
, e mantengono la corretta combinazione di spazi e schede (numero massimo di schede seguito da qualsiasi numero necessario di spazi).
In secondo luogo, questi tasti di rientro manuale non devono essere utilizzati molto se si utilizza il rientro automatico.
Se Ctrl-Tinvece di Tabdisturbarti, puoi rimappare:
:imap <Tab> ^T
Puoi anche rimappare Shift-Tabper fare il Ctrl-Ddeindent:
:imap <S-Tab> ^D
Qui ^ T e ^ D sono caratteri di controllo letterali che possono essere inseriti come Ctrl-VCtrl-T.
Con questa mappatura in atto, è ancora possibile digitare Tab letterale nel buffer utilizzando Ctrl-VTab. Nota che se lo fai, anche se :set expandtab
è attivo, otterrai un carattere di tabulazione non espanso.
Un effetto simile al <Tab>
mappa si ottiene usando :set smarttab
, il che fa sì che anche il backspace nella parte anteriore di una linea si comporti in modo intelligente.
In smarttab
modalità, quando non Tabviene utilizzato all'inizio di una riga, non ha alcun significato speciale. È diverso dalla mia precedente mappatura diTab a Ctrl-T, perché un Ctrl-Tusato ovunque in una linea (in modalità inserimento) aumenterà il rientro di quella linea.
Altre mappature utili possono essere:
:map <Tab> >
:map <S-Tab> <
Ora possiamo fare cose come selezionare alcune linee e premere Tab per rientrarle. Oppure premi Tabdue volte su una linea (in modalità comando) per aumentare il rientro.
Se si utilizzano i comandi di una corretta gestione indentazione, allora tutto è controllato da tre parametri: shiftwidth
,tabstop
e expandtab
.
Il shiftwidth
parametro controlla la dimensione del rientro; se vuoi quattro rientri spaziali, usa:set shiftwidth=4
o l'abbreviazione :set sw=4
.
Se viene fatto solo questo, allora il rientro verrà creato usando una combinazione di spazi e tab, perché noexpandtab
è l'impostazione predefinita. Usa :set expandtab
. Questo fa sì che i caratteri di tabulazione che digiti nel buffer si espandano in spazi e che l'indentazione gestita da Vim utilizzi solo spazi.
Quando expandtab
è attivo e se gestisci il rientro attraverso tutti i meccanismi di Vim appropriati, il valore di tabstop
diventa irrilevante. Controlla come vengono visualizzate le schede se si verificano nel file. Se si dispone set tabstop=8 expandtab
e si inserisce di nascosto una scheda rigida nel file utilizzando Ctrl-VTab, si produrrà un allineamento alla successiva posizione della scheda basata su 8 colonne, come al solito.