ho già letto diverse domande e risposte:Vim: rientro con le schede, allineare con spazi
- Vim: Use tabs for indentation, spaces for alignment with C source files
- Vim: Align continous lines with spaces
Ma nessuno di loro offre una soluzione per me.
Voglio davvero applicare il principio "Indent with tabs, align with spaces", ma quando si tratta di indentazione automatica, non sono riuscito a insegnare a Vim come farlo correttamente.
Si consideri il codice, assumendo tabstops == 3
, shiftwidth == 3
(>--
significa scheda, e .
(un punto) significa spazio):
{
>--long a = 1,
>-->--..b = 2,
>-->--..c = 3;
}
Quindi, fa rientrare con le linguette quanto più possibile, e quindi riempie il resto con spazi. Ma in realtà è un approccio pessimo: quando qualcuno leggerà questo codice con diverse dimensioni della scheda, il codice sarà incasinato. Ecco come apparirà con una dimensione di tabulazione uguale a 8 caratteri:
{
>-------long a = 1,
>------->-------..b = 2,
>------->-------..c = 3;
}
È orribile. Il problema è che Vim non distingue tra indentazione e allineamento.
Per far sembrare correttamente con qualunque sia la dimensione scheda è, il codice dovrebbe essere rientrato in questo modo:
{
>--long a = 1,
>--.....b = 2,
>--.....c = 3;
}
Quindi, questo codice sarà un aspetto gradevole qualunque essa dimensioni scheda è. Ad esempio, 8 caratteri:
{
>-------long a = 1,
>-------.....b = 2,
>-------.....c = 3;
}
Come ottenere ciò?
Forse il tabulare del plugin ti darebbe quello che stai cercando? https://github.com/godlygeek/tabular – Zach