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 that
resultará 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 equalexpr
o equalprg
para formatear las líneas dadas.
filetype plugin indent on
en su.vimrc
, se aplicarán las reglas relacionadas con la sangría de tipo de archivo (y complemento). Es decir, compruebe cuál es sutabstop
valor 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