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

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

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

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

Если я нажму клавишу Tab, вставится 2, но функция автоотступа Vim по-прежнему вставит 4. Что мне изменить, чтобы вставить 2?

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

решение1

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

решение2

Параметры отступов Vim

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

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

Пример

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

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

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

  1. Вставка табуляции в файл приведет к отступу шириной в 4 пробела.
  2. Поскольку ваш tabstopустановлен на 2, это фактически будет эквивалентно 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

решение3

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

Я не очень хорошо знаком с Vim, так как использую его только для некоторых случайных базовых текстовых правок, но я бы попробовал вручную ввести команду 'cindent', чтобы использовать размер автоотступа Vim по умолчанию для этого кода. Если это не сработает, вы можете попробовать 'filetype plugin indent on' и отредактировать скрипты самостоятельно, чтобы получить желаемые отступы.

Связанный контент