De vez en cuando tengo que trabajar con código que no esté sangrado al nivel de sangrado que tengo configurado para Vim (4 espacios por nivel), generalmente después de copiar / pegar algo en el archivo. Usualmente me las arreglo con <<y >>. El problema es que no saltan al siguiente nivel de sangría, solo suman o restan 4 espacios.
Si tengo un código como este
if condition:
do this
do that
haciendo >>en do thatresultará en
if condition:
do this
do that
Quiero que vaya a esto
if condition:
do this
do that
Además de hacer coincidir fácilmente la sangría de la línea anterior, quiero que salte al siguiente nivel de sangría, no agregue 4 espacios.
Esto es lo que tengo en mi .vimrc con respecto a la sangría
:set tabstop=4 shiftwidth=4 expandtab
>>y, <<respectivamente, agregar y eliminar sangría que no es lo que desea. Lo que quieres es "formatear", que se hace con ==.
:nnoremap >> ^i<tab><esc>si realmente desea un comportamiento de tabulación>>
==saltará al nivel de la línea de arriba. Si bien es bueno saberlo, no funcionaría en todos los casos que me interesen. Además de la pregunta, para qué quiero >>y <<sangrar / sangrar hasta el próximo múltiplo de ancho de cambio desde el borde en esa dirección .
==usa cualquiera equalexpro equalprgpara formatear las líneas dadas.
filetype plugin indent onen su.vimrc, se aplicarán las reglas relacionadas con la sangría de tipo de archivo (y complemento). Es decir, compruebe cuál es sutabstopvalor real (set tabstop?lo hará; lo mismo para las otras configuraciones), al editar, y cambie esos valores agregando su línea a un archivo 'después', algo así como: stackoverflow.com/a/159066/5000478