Decidí cambiar el tamaño de mi pestaña de 4 a 2, porque ¿por qué no? Cualquiera que quiera ver el código seguramente puede utilizar sus preferencias.
Sin embargo, una pregunta.
Si presiono la tecla de tabulación, se inserta 2, pero la sangría automática de Vim sigue poniendo 4. ¿Qué cambio para que sea 2?
Otra pregunta no relacionada: ¿Qué estilo de sangría es mejor para C y lenguajes similares? He estado usando 1TBS, pero hay muchos para elegir. ¿Alguno de ellos es más profesional o preferido?
Respuesta1
Intente configurar ' shiftwidth
' con el mismo valor que ' tabstop
'. Mejor aún, si está utilizando una versión bastante reciente de Vim, establezca ' shiftwidth
' en 0 y el valor predeterminado será el que tabstop
esté configurado en ' '.
Respuesta2
Opciones de sangría de Vim
Vim utiliza principalmente 3 configuraciones en cuanto al tamaño de sangría:
tabstop
,ts
: cuando Vim encuentra una tabulación en un archivo que estás abriendo, muestra la pestaña como {ts} espacios (verayuda de tabulación, o escriba:help tabstop
Vim).softtabstop
,sts
: cuando estás editando un archivo y presionas la tecla tab, Vim usa esta configuración para definir el ancho de la tabulación insertada (verayuda de softtabstop, o escriba:help softtabstop
Vim).shiftwidth
,sw
: la cantidad de espacios que Vim usa al aplicar sangría, ya sea usando elementos de sangría automática o los comandos>>
habituales<<
. Como notó Heptite, esto es lo que estabas buscando en este caso particular. Y las versiones recientes de Vim de hecho le permiten no definir esta opción,shiftwidth
entonces tomarían el valor definido portabstop
. Bastante útil (verayuda de ancho de turno).
Ejemplo
Entonces, por ejemplo, si usa la siguiente configuración:
set sts=4
set ts=2
set sw=8
Estos producirían el siguiente comportamiento:
- Insertar una tabulación en el archivo produciría una sangría de 4 espacios de ancho.
- Como
tabstop
está configurado en 2, esto sería en realidad el equivalente a 2 tabulaciones. Esto es bastante fácil de verificar, simplemente use las opcioneslist
ylistchars
para mostrar tabulaciones. - Si sangra una línea usando
>>
, la sangría tendrá 8 espacios de ancho (por lo tanto, el equivalente a 4 tabulaciones, segúntabstop
el valor, igual que arriba).
Recomendaciones de sangría de Vim (de la documentación de Vim)
De tabstop
ayuda ( :help tabstop
en Vim):
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.
Yo personalmente uso principalmente la segunda solución, con tabulaciones de 2 espacios de ancho.
set ts=2
set sts=2
set et "expand tabs to spaces
Respuesta3
De acuerdo ahttp://vim.wikia.com/wiki/Indenting_source_code, el comando 'filetype plugin indent on' hará que el programa utilice scripts de sangría específicos del tipo de archivo ubicados en el subdirectorio de sangría de la instalación de Vim. Esa página también indica que 'cindent' se usa automáticamente en archivos C y C++, y que no se le debería solicitar que use ese comando manualmente.
No estoy muy familiarizado con Vim, ya que solo lo uso para algunas ediciones de texto básicas ocasionales, pero intentaría emitir manualmente el comando 'cindent' para usar el tamaño de sangría automática predeterminado de Vim para ese código. Si eso no funciona, puede probar con 'sangría del complemento de tipo de archivo activado' y editar los scripts usted mismo para obtener las sangrías deseadas.