I have a some .py files that use spaces for indentation, and I'd like to convert them to tabs.
I could easily hack together something using regexes, but I can think of several edge cases where this approach could fail. Is there a tool that does this by parsing the file and determining the indentation level the same way the python interpreter does?
If there are not many files to convert, you can open them in vim, and use the :retab
command.
See the vim documentation for more information.
Python includes a script for the opposite (tabs to spaces). It's C:\Python24\Tools\Scripts\reindent.py
for me
:retab will swap tab with spaces, and :retab! will swap spaces with tab. 1 tab = 4 spaces, 4 spaces = 1 tab, depending on your tab setting.
In emacs, M-x tabify
will convert spaces to tabs where possible. You'll probably want to set the tab-width
variable appropriately.
I don't know if this addresses your concern that spaces be interpreted in the same way as the python interpreter, but you could always load up python-mode and use M-x indent-region
.
If you use Linux, you might also play around with unexpand:
Convert blanks in each FILE to tabs,
writing to standard output. With no
FILE, or when FILE is -, read standard
input.