Vim retab пробелы только в начале строк

Я сейчас использую

:set noet|retab!

Но проблема, с которой я сталкиваюсь, заключается в замене всех экземпляров 4 пробелов на табуляции во всем файле. Мне нужно, чтобы vim заменял только 4 пробела в начале строк.

Если я удалю! в конце retab пробелы нигде не заменяются.

Я пробовал использовать пользовательскую функцию, которую кто-то создал:

" Retab spaced file, but only indentation
command! RetabIndents call RetabIndents()

" Retab spaced file, but only indentation
func! RetabIndents()
    let saved_view = winsaveview()
    execute '%s@^\( \{'.&ts.'}\)\+@\=repeat("\t", len(submatch(0))/'.&ts.')@'
    call winrestview(saved_view)
endfunc

, но при запуске получаю приятное маленькое сообщение об ошибке:

:RetabIndents

Ошибка при обработке функции RetabIndent:

строка 2:

E486: Шаблон не найден: ^ ({4}) +

7
задан Francis Lewis 2 March 2011 в 19:08
поделиться