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
indentation
Dumitru
fuente
fuente
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>>
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 cualquieraequalexpr
oequalprg
para 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