Ответ 1
Чтобы удвоить количество пробелов в начале каждой строки (и только в начале):
:%s/^\s*/&&/g
&
в шаблоне замещения соответствует шаблон.
Вероятно, у вас не будет никакого побочного эффекта.
Я редактирую файл 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
Чтобы удвоить количество пробелов в начале каждой строки (и только в начале):
:%s/^\s*/&&/g
&
в шаблоне замещения соответствует шаблон.
Вероятно, у вас не будет никакого побочного эффекта.
Нажатие gg=G
- это команда для повторного ввода всего в файл. Если у вас есть другие элементы, которые можно переустановить, vim тоже будет отступать, что не всегда дает желаемые эффекты. Вам придется очищать их вручную, если они уродливы.
В качестве альтернативы, вы можете использовать команду >
для отступов, причем диапазоны можно просмотреть вручную несколько вручную. 99>k
, например, будет отступать на 99 строк ниже курсора на один уровень.
попробуйте выполнить следующую команду подстановки:
:%s/ / /g
(Чтобы уточнить: между первым и вторым "/" и двумя "вторым" и "третьими" есть два пробела: "/".<
Одна полезная команда при работе с проблемами с пробелами также является
set list
команда, которая будет визуально показывать все пробелы. использование
set nolist
для отмены.
Я нашел reindent script http://pypi.python.org/pypi/Reindent/0.1.0, который хорошо работает для меня. Не чистый vim, но очень простой!
После его установки вы можете использовать его в vim с помощью
:%! reindent
(т.е. передать весь буфер через программу reindent), и это было сделано.
В командной строке он может использоваться для повторного набора нескольких файлов (например, всех файлов в каталоге или даже рекурсивно вниз по дереву каталогов).
Лучший способ переформатировать Python, исправить многие другие проблемы, а также сделать его совместимым с PEP8, использовать autopep8. См. Этот связанный вопрос. Поэтому после того, как вы установили autopep8 (например, pip install autopep8
) в vim, выполните следующие действия:
:%! autopep8 -
Также есть плагин vim-autopep8, чтобы сделать вещи еще проще.
Плагин vim vim-autoformat объединяет форматтер autopep8 в vim автоматически, если он установлен. Вы можете отформатировать весь файл или визуально выбранную часть с помощью одного нажатия клавиши.
Более того, vim-autoformat учитывает соответствующие настройки вашего .vimrc
, например. если у вас есть
set shiftwidth=4
в вашем .vimrc
, он передаст эту информацию на autopep8.
Вы пробовали?
: retab
Я не нахожусь перед машиной с Vim в данный момент, поэтому я не могу это проверить.