Tabs en Vim: Cuando la alineación es incorrecta, ¿cómo arreglas ...?


2

Así que mi situación es que tengo un archivo, myarchivo.py (escrito en pitón ) que empecé a desarrollar en mi propia máquina. Usé vim para hacer esto, pero en ese momento no sabía que Vim podía permitirte definir la longitud de tus pestañas, y también para mostrar cuántas veces se había tabulado la línea mediante el uso de un marcador.

Así que antes de enviar mi archivo.py a un servidor remoto de Unix y comenzar a trabajar en él, todas mis pestañas eran sobre 6 espacios de longitud cada uno, y no había marcas que definieran cuántas sangrías estaban presentes en una línea en particular. Pero como 6 espacios es mucho, realmente no había necesidad ...

Pero cuando comencé a desarrollar en el servidor remoto, noté que sus configuraciones de vim tenían la pestaña para que estuvieran a punto. 4 espacios de longitud cada uno, y para que haya haría Ser marcas verticales para mostrar que una pestaña está presente. Sin embargo, no cambió automáticamente las líneas de código que ya estaban allí en myfile.py para que se ajusten a la configuración de las pestañas, y la configuración solo se aplicó a cualquier nueva línea de código que escribí usando vim en su servidor.

Siendo lo mejor que era, no me molesté en arreglar nada para que el archivo pareciera consistente. Ahora tengo algunas extrañas, mezclas intercaladas donde algunas líneas tienen pestañas de 4 de longitud, otras con 6, y las que tienen una longitud más corta tienen una marca vertical para cada pestaña y las más largas no tienen nada.

¿Cómo puedo solucionar de manera eficiente este lío para volver a uno ¿estándar? (Esperemos que el que tiene la pestaña más corta con las marcas verticales). Estoy buscando a alguien que tenga experiencia remota con respecto a este problema, ya sea que esto me ayude a aprender más en un nivel avanzado, o que comience con una manera indirecta primero, no me importa. Simplemente prefiero cualquier cosa en lugar de corregir manualmente cada línea. Ya sabes lo incorrecto que puede hacer que tu código cuando estás tratando con ¡Pitón!

[EDITAR] - & gt; También pensé que debería tener en cuenta que cada línea no tiene el mismo número de pestañas ... algunas líneas tienen 0, 1, 4, 5, etc, etc ...


escriba un programa de Python que intercambie pestañas por muchos espacios ... O abra los archivos en un IDE como Xcode con sus preferencias de pestañas establecidas en el nuevo estándar, seleccione todo el texto y vuelva a sangrar ... Estos son más elegantes que el manual . Me gusta la primera solución porque usas un martillo para arreglar un martillo.

Pero no todas las líneas tienen el mismo número de pestañas ... algunas pueden tener solo 1, ¡pero hay algunas que incluso tienen 6!
Dark Templar


2
¿Has probado un sencillo :retab! ¿ya?
sebastiangeiger

@sebastiangeiger: gracias, simplemente lo intenté, ya que era la solución más simple que he recibido hasta ahora, pero parece que lo que puede estar haciendo es cortar las pestañas de 6 cuerpos en dos (como se indica en las marcas verticales: retab! ha agregado; agregar de forma automática las marcas verticales formaba parte de mi objetivo, por lo que se solucionó. El problema es que algunas líneas en las que estaba seguro que solo contenían una pestaña de 6 longitudes ahora aparecen como DOS marcas verticales
Dark Templar

Respuestas:


3

La sangría en vim puede ser un poco peluda.

Puede configurar vim para insertar un carácter de tabulación o para insertar un número de espacios al presionar la tecla de tabulación con la tecla expandtab opción. También puede configurar la cantidad de pestañas anchas (cuántos espacios ocupan) con la tabulación opción. Finalmente, también puede configurar vim para que muestre las pestañas con un carácter especial usando la listchars opción (▸ es una opción común). Sin embargo, ese carácter no se mostrará donde se usan los espacios en lugar de las pestañas. Es por eso que algunas de tus pestañas tienen un carácter especial y otras no, algunas son reales y otras son solo espacios que actúan como una pestaña.

Parece que el servidor remoto de Unix fue configurado con expandtab y en tabstop configurado en 6, de modo que cuando ingresa una pestaña, genera 6 espacios, mientras que su servidor de desarrollo parece estar configurado con noexpandtab y tabstop poner a 4.

Para solucionar este problema, puede usar la funcionalidad buscar / reemplazar de vim para reemplazar todas las ocurrencias de seis espacios con una sola pestaña usando el comando :%s/ \{6}/\t/g. Para comprender este comando, debe leer sobre las capacidades de búsqueda y reemplazo de vim aquí . Para evitar que esto suceda en el futuro, debe hacer su propio .vimrc archivo que configura las cosas a su gusto y lo coloca en su directorio de inicio para que se cargue automáticamente o :source Siempre que edites cualquier archivo.

Nota: También hay otras opciones de pestaña como ancho de turno y softtabstop pero no son tan relevantes para su problema. Sin embargo, debe leer sobre ellos para que pueda configurar vim para que actúe exactamente como lo desea.


Habiendo desordenado mi archivo de esta manera, tenga cuidado con la simple opción de buscar y reemplazar. Si busca sangrías de 6 espacios, también puede encontrar sangrías de 4 espacios de un año y medio. Y cómo dirá dos sangrías de 6 espacios de tres sangrías de 4 espacios.
P1h3r1e3d13

1

CÓMO CONVERTIR 6 - & gt; 4

1. Su configuración actual (tab == 6-spaces-width & amp; & amp; expand tab)

:set ts=6 et

#!/usr/bin/env python
def fun():
······print "hello, world"

2. Convertir 6 espacios a tabulación

:set noet
:ret!

#!/usr/bin/env python
def fun():
»·····print "hello, world"

3. restablecer la pestaña a 4 espacios de ancho

:set ts=4

#!/usr/bin/env python
def fun():
»···print "hello, world"

4. Convertir la pestaña a 4 espacios

:set et
:ret!

#!/usr/bin/env python
def fun():
····print "hello, world"

0

Cómo lo haría. Configura las pestañas en tu .vimrc En ambas máquinas como prefieras.

Número de espacios para los que cuenta una pestaña

set tabstop=4

Número de espacios utilizados para la sangría (automática)

set shiftwidth=4

Si quieres expandir pestañas a espacios

set expandtab

o no

set noexpandtab

Cada vez que abres un archivo que tiene una sangría desordenada. Ir al inicio de la página. sol sol y autoindente al final de la página. = sol

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.