2010-12-03 3 views
6

У меня есть код с отформатированной вкладкой в ​​python, и у меня есть некоторый пробельный код в python.преобразование пробела в файлы python?

Интеграция кода в боль ... мой редактор хочет работать в вкладках или пробелах, но не в обоих.

Есть ли функция командной строки в Linux или, ну, что угодно, что будет форматировать форматирование кода на пиктограмму так или иначе?

ответ

3

reindent.py - отличный скрипт утилиты, который преобразует любой файл python .py в один, используя отступы в 4 пробела и без вкладок.

Это полезно для «нормализации» кода из разрозненных источников, если вы согласитесь согласиться на четырехмерном стандарте. (Или, если вам нужны вкладки, вы можете запустить команду reindent.py, за которой следует команда unix unexpand.)

PS. У вашей установки Python может быть установлен файл reindent.py в папке «Инструменты» или «Примеры». На Ubuntu предоставляется пакет python-examples, и он находится по адресу /usr/share/doc/python2.6/examples/Tools/scripts/reindent.py.

1

Многие редакторы (например, vi) преобразуют вкладки в пробелы или из них, когда вы вставляете строку. Поэтому настройте настройки вкладки, но вы хотите отложить весь файл 1 шаг, а затем отменить один шаг, и ваш результат будет выполнен.

Vim команды:

1GVG <-- select entire file (i have this bound to CTRL-A) 
>  <-- indent one step 
1GVG <-- select again 
<  <--- unindent one step 
2

'человек расширить' некоторую информацию

это в Coreutils на Debian

+0

Он также находится в ядре в Редхате. Кроме того, `unexpand` конвертировать другой способ. – tylerl 2010-12-03 23:39:25

2

Вы можете использовать расширить и unexpand команд Unix для этого.

Обычно, если я код в vim, например, он автоматически конвертирует вкладки в пробелы.

мой ~/.vimrc выглядит примерно так:

set expandtab 
set tabstop=4 
0

Как о Perl: perl -pe 's/(.*?)\t/$1.(" " x (4-length($1)%4))/ge' file_with_tabs.txt

питона (это из источника Markdown ...):

def _detab_sub(self, match): 
    g1 = match.group(1) 
    return g1 + (' ' * (self.tab_width - len(g1) % self.tab_width)) 
def _detab(self, text): 

    if '\t' not in text: 
     return text 
    return self._detab_re.subn(self._detab_sub, text)[0] 
0

Редактор хорошего программиста будет иметь команду, которая преобразует вкладки в пробелы или наоборот/наоборот; вы также можете сделать это с помощью поиска и замены в редакторе.

Смежные вопросы