Як змінити розмір вкладки у Vim?


172

Кожен раз, коли я додаю селектор в CSS і натискаю, Enterщоб визначити властивості, він закінчується так:

#selector {
        property: value;
}

(8-пробільні вкладки)

Як я можу налаштувати Vim так, щоб це було так:

#selector {
    property: value;
}

(4-пробільні вкладки)


4
Ви хочете одну вкладку шириною 4 проміжки? Чотири пробіли? Або чотири вкладки шириною 1? Вони різні речі, і вам не зрозуміло. У будь-якому випадку починайте з читання: he ts:: sw sw, і: він expandt
abeyer

Відповіді:


103

Розгортання відповіді зула:

Якщо ви хочете налаштувати Vim для використання конкретних налаштувань під час редагування певного типу файлів, вам потрібно використовувати автокоманди:

autocmd Filetype css setlocal tabstop=4

Це зробить так, що вкладки відображатимуться як 4 пробіли. Налаштування expandtabпризведе до того, що Vim фактично вставить пробіли (їх кількість контролюється tabstop) при натисканні на вкладку; ви можете використовувати softtabstopдля правильної роботи backspace (тобто зменшити відступ, коли саме це відбудеться, якщо використовувати вкладки, а не завжди видаляти по одному знаку за один раз).

Для того, щоб повністю обгрунтоване рішення про те , як встановити речі, вам потрібно прочитати Vim документи на tabstop, shiftwidth, softtabstopі expandtab. Найцікавіший біт знаходиться під expandtab( :help 'expandtab):

Існує чотири основні способи використання вкладок у Vim:

  1. Завжди тримайте «tabstop» на рівні 8, встановлюйте «softtabstop» та «shiftwidth» на 4 (або 3 або що завгодно) та використовуйте «noexpandtab». Тоді Vim використовуватиме поєднання вкладок і пробілів, але вводить текст і буде вести себе так, як вкладка з’являється кожні 4 (або 3) символи.

  2. Встановіть 'tabstop' та 'shiftwidth' на все, що вам більше подобається, і використовуйте 'expandtab'. Таким чином ви завжди будете вставляти пробіли. Форматування ніколи не буде зіпсовано, коли буде змінено "табло".

  3. Встановіть "табло" та "ширину зсуву" на все, що вам більше подобається, та використовуйте | modeline | щоб встановити ці значення при повторному редагуванні файлу. Працює лише при використанні Vim для редагування файлу.

  4. Завжди встановлюйте параметри "tabstop" і "shiftwidth" на одне і те ж значення і "noexpandtab". Тоді це повинно працювати (лише для початкових відступів) для будь-яких налаштувань табулетів, якими користуються люди. Можливо, буде непогано мати вкладки після першого вставленого непорожнього простору, якщо це зробити. Інакше вирівняні коментарі будуть помилковими, коли змінено 'tabstop'.


Крім того, не переживайте над тим, щоб згодом змінити свою думку ... дивіться :help retab(перевірте варіант!!).
Michał Marczyk

Чи використання autocmd доповнює використання .vimrc, або альтернативу?
Джош Десмонд

225
:set tabstop=4
:set shiftwidth=4
:set expandtab

Тут буде вставлено чотири пробіли замість символу вкладки. Пробіли трохи «стабільніші», тобто текст, відрізаний пробілами, буде відображатися однаково в браузері та будь-якому іншому додатку.


83
Так, але вкладки є семантичними (кожна вкладка означає 1 шар відступу), тоді як пробіли суто презентаційні. Інакше кажучи, використання вкладок дозволить іншим людям, які переглядають ваш код, відображатись настільки широко, як їм зручно, тоді як пробіли цього не дозволяють.
K Prime

11
Зауважте, що якщо ви віддаєте перевагу ">" та "<", щоб перемістити текст на тій же відстані, що і вкладка -key, ви можете просто :set shiftwidth=0у своєму vimrc і назавжди забути про нього, тому що це говорить vim, що ви завжди хочете, щоб він відповідав tabstop.
SeldomNeedy

133

Щоб внести зміни в один сеанс, використовуйте цю команду:

:set tabstop=4

Для того, щоб зробити зміни постійними, додати його ~/.vimrcабо ~/.vim/vimrc:

set tabstop=4

Це вплине на всі файли, а не лише на css. Щоб вплинути лише на файли css:

autocmd Filetype css setlocal tabstop=4

як сказано у відповіді Міхала .


2
якщо ви хочете, щоб вкладка функціонувала як чотири пробіли, потрібно додати інші рядки у відповіді @Zoul до .vimrc; тобто додайте "set shiftwidth = 4" та "set extensiontab" до .vimrc теж.
квартал

7
Питання "Як змінити розмір вкладки у Vim?"
Кіт

Ось як я це зробив би. І щоб забезпечити ~/.vimrcзавжди резервне копіювання, я зазвичай зберігаю файл у своїй папці Dropbox, потім створюю посилання sym на робочий стіл:ln -s /home/myfolder/Dropbox/.vimrc ~
чаріть

41

Деякі відповіді на цій сторінці - це виправлення описаної проблеми "одноразове використання". Значить, наступного разу, коли ви відкриєте документ із vim, повернуться попередні налаштування вкладки.

Якщо хтось зацікавлений у постійній зміні налаштувань вкладки:


11
Це вставляє пробіли, а не вкладки.
Супернова

5
@Supernovah ви можете видалити "extensiontab", щоб отримати вкладки
kommradHomer

28

Як однолінійний перехід у vim :

:set tabstop=4 shiftwidth=4 expandtab

Для постійної настройки додайте ці рядки до ~ / .vimrc :

set tabstop=4
set shiftwidth=4
set expandtab

6

ОНОВЛЕННЯ

Якщо ви працюєте в конкретному проекті, настійно рекомендую скористатися editorconfig .

Це дозволяє визначити .editorconfigфайл у корені вашого сховища, визначаючи відступ, який потрібно використовувати для кожного типу файлу у вашому сховищі.

Наприклад:

root = true

[*.css]
charset = utf-8
indent_style = space
indent_size = 4

[*.js]
charset = utf-8
indent_style = space
indent_size = 2

Існує плагін vim, який автоматично налаштовує vim відповідно до конфігураційного файлу для відкритого файлу.

Крім того, .editorconfigфайл автоматично підтримується у багатьох інших IDE та редакторах, тому це найкращий варіант для співпраці між користувачами в різних середовищах.

ОРИГІНАЛЬНИЙ ВІДПОВІДЬ

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

nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>

Це відображає два різних набори розмірів для клавіш \ t і \ m. Ви можете відновити це до будь-яких клавіш.

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