Розмір вкладки Vim під час натискання <Tab> і при застосуванні автозахисту


22

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

Однак питання.

Якщо я натискаю клавішу вкладки, вона вставляє 2, але авторитет Vim все ще ставить 4. Що я можу змінити, щоб зробити це 2?

Ще одне незв'язане питання: Який стиль відступу найкраще підходить для C та подібних мов? Я використовував 1TBS, але є стільки, на що можна вибрати. Хтось із них є більш професійним чи бажаним?

Відповіді:


17

Спробуйте встановити " shiftwidth" на те саме значення, що і " tabstop". А ще краще, якщо ви використовуєте досить недавню версію Vim, встановіть " shiftwidth" на 0, а за замовчуванням встановлено все, що " tabstop" встановлено.


Це те, що я шукав. Наразі дебатується між налаштуваннями tsяк 2, 4 або 8
користувач341814

Я використовую 8 для файлів без коду, або 2 або 4, залежно від мови та кількості вкладень, як правило.
Гепфіт

Я займаюся лише C на даний момент.
користувач341814

33

Варіанти відступу Vim

Vim в основному використовує 3 налаштування щодо розміру відступу:

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

Приклад

Наприклад, якщо ви користуєтесь такими налаштуваннями:

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

-1

Згідно з http://vim.wikia.com/wiki/Indenting_source_code , команда "відступ відключення для філейного типу" призведе до того, що програма використовуватиме сценарії відступу для певного типу файлів, розташовані у підкаталозі відступу установки Vim. На цій сторінці також зазначено, що "cindent" використовується автоматично у файлах C та C ++, і вам не потрібно вимагати використання цієї команди вручну.

Я не дуже знайомий з Vim, тому що я використовую його лише для деякого періодичного редагування основного тексту, але я б спробував вручну ввести команду 'cindent', щоб використовувати для цього коду стандартний розмір автозахисту за замовчуванням. Якщо це не спрацює, ви можете спробувати "відступити плагін від філейного типу" та відредагувати сценарії самостійно, щоб отримати потрібні відступи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.