Vim: eliminar la sangría manualmente

Me gustaría usar la sustitución en Vim para eliminar la sangría manualmente (en lugar de hacer <)

Entonces hago esto:

:%s/^(^I)?//g

pero no encuentra el patrón. ¿Qué estoy haciendo mal?

preguntado el 29 de junio de 12 a las 20:06

¿Tienes el conjunto 'mágico' o 'nomágico'? -

3 Respuestas

Vim no comprende la sintaxis de expresiones regulares de Perl-ish que parece usar. debe ser:

%s/^\t\?//

El (...) no es necesario, y debe escribirse como \(...\). En lugar de \t, también puede pulsar Ctrl + V lengüeta, o use el átomo general para espacios en blanco \s.

Respondido el 29 de junio de 12 a las 20:06

Probablemente necesites usar \( y \) en lugar de ( y ). Además, asegúrese de que el ^I es un solo carácter (p. ej., creado usando control-v TAB) y no dos (p. ej., creado usando '^' e 'I'). Finalmente, no estoy seguro si incluso necesitas/quieres el ?.

Respondido el 29 de junio de 12 a las 20:06

Me doy cuenta de la pregunta solicitada por una sustitución, pero creo que es necesario proponer algunos ex-comandos que brindan una funcionalidad similar:

  • Reducir 1 nivel de sangría para todo el archivo: :%<
  • Reducir 1 nivel de sangría para las líneas 1-5: :1,5<
  • Reduzca 1 nivel de sangría para las líneas que coinciden con el patrón: :g/pattern/<
  • Eliminar toda la sangría: :%left or :%le para abreviar

Para obtener más ayuda, consulte:

:h :<
:h :g
:h :left
:h :range

Respondido 13 Jul 12, 22:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.