По-перше, не використовуйте Tabключ у Vim для ручного відступу. Vim має пару команд у режимі вставки для ручного збільшення або зменшення кількості відступу. Ці команди є Ctrl-Tі Ctrl-D. Ці команди дотримуватися значення tabstop, shiftwidthі expandtab, і підтримувати правильну суміш просторів і вкладок (максимальна кількість вкладок з наступним будь-яких необхідних числом пробілів).
По-друге, ці ручні відступи не потрібно використовувати дуже сильно, якщо ви використовуєте автоматичні відступи.
Якщо Ctrl-Tзамість цього Tabвас турбує, ви можете перезавантажити:
:imap <Tab> ^T
Ви також Shift-Tabможете зробити Ctrl-Dповторний перезапис, щоб зробити деіндент:
:imap <S-Tab> ^D
Тут ^ T і ^ D є буквальними контрольними символами, які можна вставити як Ctrl-VCtrl-T.
Маючи таке зіставлення на місці, ви все одно можете вводити буквальний вкладку в буфер, використовуючи Ctrl-VTab. Зауважте, що якщо ви це зробите, навіть якщо :set expandtabвін увімкнено, ви отримаєте нерозширений символ вкладки.
Аналогічний ефект з <Tab>картою досягається за допомогою :set smarttab, що також змушує задню область в передній частині лінії поводитись розумно.
У smarttabрежимі, коли Tabвін використовується не на початку рядка, він не має особливого значення. Це відрізняється від мого вище відображення Tabдо Ctrl-T, так як Ctrl-Tвикористовується в будь-якій точці лінії (в режимі вставки) збільшить відступ цієї лінії.
Іншими корисними відображеннями можуть бути:
:map <Tab> >
:map <S-Tab> <
Тепер ми можемо робити такі речі, як виділення деяких рядків, і натискаємо, Tabщоб відступати їх. Або Tabдвічі натисніть на рядок (у командному режимі), щоб збільшити її відступ.
Якщо ви використовуєте правильні команди управління відступи, то все контролюється трьома параметрами: shiftwidth, tabstopі expandtab.
shiftwidthПараметр контролює розмір відступу; якщо ви хочете чотири пробіли, використовуйте :set shiftwidth=4або абревіатуру :set sw=4.
Якщо це робиться лише тоді, відступ буде створено за допомогою суміші пробілів і вкладок, оскільки noexpandtabце за замовчуванням. Використовуйте :set expandtab. Це призводить до того, що символи вкладок, які ви вводите в буфер, розширюються на пробіли, а для відступу, керованого Vim, використовувати лише пробіли.
Коли expandtabвін увімкнено, і якщо ви керуєте відступом за допомогою усіх належних механізмів Vim, значення значення tabstopстає неактуальним. Він контролює, як відображаються вкладки, якщо вони трапляються у файлі. Якщо у вас є, set tabstop=8 expandtabа потім прокрадаєте тверду вкладку у файл, використовуючи Ctrl-VTab, вона створить вирівнювання до наступного положення вкладки на основі 8-стовпців, як зазвичай.