Подтвердить что ты не робот

Переформатировать файл Python, чтобы иметь 4 пробела в пространстве

Я редактирую файл Python, который использует два пробела для программных отступов. Я предпочитаю 4 пробела. В моем .vimrc у меня есть следующие настройки, относящиеся к отступу:

set tabstop=4                     "Indentation levels every four columns
set expandtab                     "Convert all tabs typed to spaces
set shiftwidth=4                  "Indent/outdent by four columns
set softtabstop=4

Как мне заставить Vim конвертировать все существующие 2 отступов пространства в 4 отступов пространства?

Другими словами:

if something:
  dothis()

становится

if something:
    dothis()

Когда я попробовал gg = G

def check():
  for a in list:
    for  b in list2:
      check(a, b)
      while (len > MAX) :
        poll()

  while(len(thelist) > 0) :
    poll()  

  return results

стал

def check():
    for a in list:
    for  b in list2:
    check(a, b)
    while (len > MAX) : 
        poll()

        while(len(thelist) > 0) :
            poll()

            return results
4b9b3361

Ответ 1

Чтобы удвоить количество пробелов в начале каждой строки (и только в начале):

:%s/^\s*/&&/g

& в шаблоне замещения соответствует шаблон.

Вероятно, у вас не будет никакого побочного эффекта.

Ответ 2

Нажатие gg=G - это команда для повторного ввода всего в файл. Если у вас есть другие элементы, которые можно переустановить, vim тоже будет отступать, что не всегда дает желаемые эффекты. Вам придется очищать их вручную, если они уродливы.

В качестве альтернативы, вы можете использовать команду > для отступов, причем диапазоны можно просмотреть вручную несколько вручную. 99>k, например, будет отступать на 99 строк ниже курсора на один уровень.

Ответ 3

попробуйте выполнить следующую команду подстановки:

:%s/  /    /g

(Чтобы уточнить: между первым и вторым "/" и двумя "вторым" и "третьими" есть два пробела: "/".<

Одна полезная команда при работе с проблемами с пробелами также является set list команда, которая будет визуально показывать все пробелы. использование set nolist для отмены.

Ответ 4

Я нашел reindent script http://pypi.python.org/pypi/Reindent/0.1.0, который хорошо работает для меня. Не чистый vim, но очень простой!

После его установки вы можете использовать его в vim с помощью

:%! reindent

(т.е. передать весь буфер через программу reindent), и это было сделано.

В командной строке он может использоваться для повторного набора нескольких файлов (например, всех файлов в каталоге или даже рекурсивно вниз по дереву каталогов).

Ответ 5

Лучший способ переформатировать Python, исправить многие другие проблемы, а также сделать его совместимым с PEP8, использовать autopep8. См. Этот связанный вопрос. Поэтому после того, как вы установили autopep8 (например, pip install autopep8) в vim, выполните следующие действия:

:%! autopep8 -

Также есть плагин vim-autopep8, чтобы сделать вещи еще проще.

Ответ 6

Плагин vim vim-autoformat объединяет форматтер autopep8 в vim автоматически, если он установлен. Вы можете отформатировать весь файл или визуально выбранную часть с помощью одного нажатия клавиши.

Более того, vim-autoformat учитывает соответствующие настройки вашего .vimrc, например. если у вас есть

set shiftwidth=4

в вашем .vimrc, он передаст эту информацию на autopep8.

Ответ 7

Вы пробовали?

: retab

Я не нахожусь перед машиной с Vim в данный момент, поэтому я не могу это проверить.