Размер вкладки Vim при нажатии <Tab> и при применении автоматического отступа

22

Я решил изменить размер вкладки с 4 на 2, потому что почему бы и нет? Любой, кто захочет взглянуть на код, может использовать свои предпочтения.

Однако вопрос.

Если я нажимаю клавишу табуляции, она вставляет 2, но автоиндент Vim все еще ставит 4. Что я могу изменить, чтобы сделать это 2?

Еще один не связанный вопрос: какой стиль отступа лучше всего подходит для C и подобных языков? Я использую 1TBS, но есть из чего выбирать. Кто-нибудь из них более профессиональный или предпочитаемый?

user341814
источник

Ответы:

17

Попробуйте установить « shiftwidth» на то же значение, что и « tabstop». Еще лучше, если вы используете достаточно свежую версию Vim, установите ' shiftwidth' в 0, и по умолчанию будет установлено значение ' tabstop'.

Heptite
источник
Это то, что я искал. В настоящее время обсуждается установка ts2, 4 или 8
user341814
Я использую 8 для некодовых файлов, и 2 или 4 в зависимости от языка и количества вложений.
Гепт
Я делаю только C на данный момент.
user341814
33

Варианты отступов Vim

Vim в основном использует 3 параметра для размера отступа:

  • tabstop, ts: когда Vim встречает табуляцию в открываемом вами файле, он отображает вкладку в виде пробелов {ts} (см. справку по tabstop или введите :help tabstopVim).
  • softtabstop, sts: когда вы редактируете файл и нажимаете клавишу табуляции, Vim использует этот параметр для определения ширины вставленной табуляции (см. справку softtabstop или введите :help softtabstopVim).
  • shiftwidth, sw: Количество пробелов Вим использует при отступов, либо с помощью автоотступа материал или обычный >>, <<команды. Как заметил Гептит, это то, что вы искали в данном конкретном случае. И последние версии Vim действительно позволяют вам не определять эту опцию, shiftwidthа затем принимают значение, определенное как tabstop. Довольно удобно (см. Справку по shiftwidth ).

пример

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

set sts=4
set ts=2
set sw=8

Это приведет к следующему поведению:

  1. Вставка таблицы в файл приведет к появлению отступа в 4 пробела.
  2. Так как для вас tabstopустановлено значение 2, это фактически эквивалентно двум таблицам. Это довольно легко проверить, просто используйте параметры listи listcharsдля отображения таблиц.
  3. Если вы сделаете отступ с использованием строки >>, отступ будет иметь ширину 8 пробелов (следовательно, эквивалент 4 таблиц, основанных на tabstopзначении, как указано выше).

введите описание изображения здесь

Рекомендации по отступам Vim (из документации Vim)

Из tabstopсправки ( :help tabstopв Vim):

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

Лично я использую в основном второе решение с таблицами шириной в 2 пробела.

set ts=2
set sts=2
set et     "expand tabs to spaces
pabuisson
источник
-1

Согласно http://vim.wikia.com/wiki/Indenting_source_code , команда 'intype on plugin filetype plugin' заставит программу использовать специфичные для filetype сценарии отступов, расположенные в подкаталоге indent установки Vim. На этой странице также говорится, что «cindent» автоматически используется в файлах C и C ++, и вам не нужно использовать эту команду вручную.

Я не очень знаком с Vim, так как я использую его только для некоторого периодического базового редактирования текста, но я бы попытался вручную ввести команду 'cindent', чтобы использовать размер автоиндента Vim по умолчанию для этого кода. Если это не сработает, вы можете попробовать «отступ для плагина filetype» и отредактировать сценарии самостоятельно, чтобы получить нужные отступы.

рукав моря
источник