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
indentation
Dumitru
fuente
fuente

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>>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 cualquieraequalexproequalprgpara formatear las líneas dadas.Respuestas:
Cuando se utiliza uno de los comandos
{count}>>,{count}<<,>{motion}o<{motion}, en algunas líneas que ya han sido sangrados, y desea que su nuevo nivel de sangría para ser un múltiplo de su'shiftwidth'valor de opción, puede activar la'shiftround'opción, y añadir esta línea en suvimrc:fuente
Si siempre desea
>>sangrar a la siguiente pestaña y<<eliminar a la última pestaña, puede volver a vincularlos así:Esto moverá el cursor, pero probablemente podría hacer algunos trucos de marca para moverlo hacia atrás.
^no deja unam'marca, pero puede dejar una manualmente dentro del enlace.fuente