Preferencias de Tab Vs Space en Vim

Vim es muy complaciente cuando se trata de la pestaña Vs. preferencias de espacio. Como yo lo entiendo, latabstop configuración indica el ancho de un carácter de tabulación. losshiftwidth la configuración especifica cuántas columnas se incrementarán / disminuirán al utilizar el<< y>> comandos, mientras que lasofttabstop la configuración influye en la cantidad de espacios en blanco que se insertarán al presionar elLengüeta Tecla en modo insertar. Siexpandtab está activado, la tecla de tabulación se insertasofttabstop Número de caracteres del espacio. Considerando que conexpandtab apagado, presionando elLengüeta la tecla inserta el menor número posible de caracteres de tabulación + espacio que coincidansofttabstop. (Por favor corrígeme si estoy equivocado.)

Este último punto me hace pensar: ¿hay un caso práctico en el que no quisieras?shiftwidth == tabstop && tabstop == softtabstop? No puedo pensar en uno. En lo que a mí respecta, sería más conveniente si pudiera establecer los 3 de estos en el mismo valor, en una sola asignación. p.ej. vocación:

:set stab=4

lo que sería equivalente a correr:

:set tabstop=4 softtabstop=4 shiftwidth=4 

¿Alguien puede sugerir cómo se podría hacer esto?

ACTUALIZAR

Gracias por las respuestas tan lejos dedemasiado php, hobbs ykaiser.se. En lugar de responder a cada uno individualmente, actualizo la pregunta aquí.

Softtabstop con expandtab apagado

Dije anteriormente que con la barra desplegable desactivada, al presionar la tecla Tab, se inserta el menor número posible de caracteres tab + espacio que coincidansofttabstop. Respaldo eso, pero creo que necesito explicar lo que quise decir. Intentaré hacerlo a través de algunos ejemplos. Para seguir adelante, corre:set list Para que puedas ver los caracteres de tabulación.

tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab

En el modo de inserción, al presionar la tecla de tabulación se insertan 2 caracteres de espacio. Presione la tecla de tabulación por segunda vez y, en lugar de insertar dos caracteres de espacio más (para un total de 4 caracteres de espacio), reemplaza los 2 espacios anteriores con un solo carácter de pestaña. Tabstop se establece en 4, por lo que un único carácter de pestaña tiene el mismo ancho que 4 espacios.

tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab

En el modo de inserción, al presionar la tecla de tabulación se inserta 1 carácter de tabulación más 2 espacios. El carácter de la pestaña tiene un ancho de 4, por lo que el ancho total es 6, y esto se logra usando 3 caracteres. Al presionar la tecla de tabulación por segunda vez, se insertan dos caracteres de tabulación y se eliminan los dos espacios que se insertaron anteriormente. El ancho total es 12, y esto se logra usando 3 caracteres.

En ambos ejemplos, Vim inserta el número mínimo posible de caracteres tab + espacio que coinciden con softtabstop.

Si estoy trabajando con expandtab desactivado, no puedo verme a mí mismo queriendo el control granular extra que se puede lograr al configurar softtabstop a un valor diferente de tabstop. Todavía sería útil para mí poder establecertabstop, softtabstop yshiftwidth al mismo valor con un solo comando.

¿Expandtab hace que softtabstop sea redundante?

tabstop=4 softtabstop=0 shiftwidth=4 expandtab

En el modo de inserción, al presionar la tecla tabulador se insertan 4 espacios. Al presionar la tecla Eliminar se elimina un solo espacio, por lo que tiene que retroceder 4 veces si presiona la tecla de tabulación por accidente.

tabstop=4 softtabstop=4 shiftwidth=4 expandtab

En el modo de inserción, al presionar la tecla tabulador se insertan 4 espacios. Al presionar la tecla de retroceso se eliminan 4 espacios.

Si estoy trabajando conexpandtab encendido, preferiría que la tecla de eliminación elimine la misma cantidad de espacios en blanco que las inserciones de la tecla de tabulación. Entonces, en este caso, también, creo que sería útil poder asignar el mismo valor atabstop, softtabstop yshiftwidth simultaneamente.

Un atajo aún sería útil

Es genial que Vim proporcione tanta flexibilidad, pero no puedo ver que lo necesite. Solo quiero poder elegir el ancho de una pestaña, y si es una pestaña "dura" (usando un carácter de pestaña) o una pestaña "blanda" (compuesta de espacios). Alternar entre pestañas duras y blandas es bastante fácil (:set expandtab!), pero me gustaría que fuera más sencillo establecer el ancho de la pestaña, sin tener que jugar con 3 parámetros diferentes.

Así que mi sugerencia propuesta para algo como:set stab=4 Todavía me suena bien.

Respuestas a la pregunta(7)

Su respuesta a la pregunta