Отступы с пробелами, но все еще использовать предпочтительную ширину смещения в Vim? - PullRequest
1 голос
/ 19 июля 2011

У меня проблема с использованием пробелов для отступов в Vim.Рекомендации по кодированию многих проектов указывают, что код должен иметь отступ с использованием пробелов, а не табуляции.Справедливо.Но есть ли способ, когда я работаю с их кодом, чтобы все еще видеть и использовать мою предпочтительную ширину смещения?

Например, этот фрагмент кода имеет отступ с использованием 8 пробелов:

function foo() {
        return 'foo';
}

Есть ли способ, что, когда я открываю это в Vim, он отображает (и отступы для правок) как это (shiftwidth 4):

function foo() {
    // edited to add this comment
    return 'foo';
}

Но, когда я сохраняю это, оносохранено так (8 пробелов):

function foo() {
        // edited to add this comment
        return 'foo';
}

Это происходит вполне естественно, когда вы используете вкладки для отступа.Просто настройте shiftwidth и вуаля, вы можете редактировать любой отступ, который вы предпочитаете.Но большинство проектов в наши дни требуют отступов, использующих пробелы.И кажется невозможным отредактировать файл в моей личной предпочтительной ширине смены, но при этом использовать правила отступа проекта при использовании пробелов.

1 Ответ

2 голосов
/ 19 июля 2011

См. Справку vim для retab.В нем есть пример для выполнения того, что вы просите.

Если у вас нет того же файла справки vim, который я делаю:

                                                        *retab-example*
Example for using autocommands and ":retab" to edit a file which is stored
with tabstops at 8 but edited with tabstops set at 4.  Warning: white space
inside of strings can change!  Also see 'softtabstop' option. >

  :auto BufReadPost     *.xx    retab! 4
  :auto BufWritePre     *.xx    retab! 8
  :auto BufWritePost    *.xx    retab! 4
  :auto BufNewFile      *.xx    set ts=4
...