2008-12-03 25 views
6

Tengo algunos archivos .py que usan espacios para la sangría, y me gustaría convertirlos en pestañas.Herramienta para convertir sangría python de espacios a pestañas?

Pude fácilmente hackear algo utilizando expresiones regulares, pero puedo pensar en varios casos extremos donde este enfoque podría fallar. ¿Hay alguna herramienta que haga esto al analizar el archivo y determinar el nivel de sangría de la misma manera que lo hace el intérprete de Python?

Respuesta

15

Si no hay muchos archivos para convertir, puede abrirlos en vim, y usar el comando :retab.

Consulte the vim documentation para obtener más información.

15

Python incluye un script para lo contrario (pestañas en espacios). Es C:\Python24\Tools\Scripts\reindent.py para mí

+0

Esto no está disponible en Linux, incluso en py26. – sorin

3

En emacs, M-x tabify convertirá espacios en pestañas donde sea posible. Probablemente desee establecer la variable tab-width de forma adecuada.

No sé si esto se dirige a su preocupación de que los espacios se interpretan de la misma manera que el intérprete de Python, pero siempre se podía cargar hasta pitón-mode y utilizar M-x indent-region.

9

: retab cambiará la pestaña por espacios, y: retab! intercambiará espacios con pestañas. 1 pestaña = 4 espacios, 4 espacios = 1 pestaña, según la configuración de la pestaña.

+0

+1, no sabía que funcionaba en ambos sentidos; ¿usa la configuración 'tabstop', presumiblemente? – James

2

Si utiliza Linux, también puede jugar con unexpand:

espacios en blanco Convierte en un fichero en tabulaciones, escribiendo en la salida estándar. Sin ARCHIVO, o cuando ARCHIVO está -, lea la entrada estándar .

+0

Encontrarás una compilación win32 si quieres. – sorin

Cuestiones relacionadas