Як я можу змінити відступ за замовчуванням на основі файлів?


34

Я хотів би мати різні відступи залежно від типу файлу, над яким я працюю. Наприклад, працюючи над .cфайлом, я хотів би, щоб в моєму відступі було 4 пробіли. У .htmlфайлах, які я хотів би (повинен) працювати з вкладками.

Як я цього досягти?

Відповіді:


25

Найкращий спосіб - це встановити ці налаштування ~/.vim/after/ftplugin/<filetype>.vim.

Для HTML (якщо ви хочете 4 вкладки на всі символи):

~/.vim/after/ftplugin/html.vim

setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab

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

- редагувати -

Якщо у вас є filetype plugin onу вашому vimrc- що ви повинні - Vim буде намагатися виявити тип файлу з файлів і редагування, як тільки правильний тип файлу буде знайдений і набір для буфера, спробуйте джерело відповідного ftplugin в цих стандартних місцях:

$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim

Все це відбувається автоматично, тому якщо ваш файл розпізнається Vim, немає абсолютно ніяких причин додавати будь-яку логіку виявлення файлів: просто додайте свої налаштування до потрібного ftplugin, і ви добре.


Чи потрібно мені якось активувати ftplugin, або створення файлів (ів) активує його автоматично?
DeltaLima

Переконайтеся , що у вас є filetype plugin indent onу вашому vimrc.
romainl

1
@DeltaLima vim має шлях, який він проходить, щоб перевірити настройки. Доки filetype plugin onвстановлено, шлях vim включає в себе ftplugin/<filetype>.vimі after/ftplugin/<filetype>/vimфайли на своєму шляху.
davidlowryduda

@DeltaLima, будь ласка, дивіться мою редакцію.
romainl

14

Ви можете зробити це з автокомандами у своєму .vimrc.

Наприклад, у мене є функція, html_like_modeяка встановлює різні речі для редагування HTML-файлів. У своєму .vimrc:

au BufNewFile,BufRead *.html call s:html_like_mode()

Це відключення розширення файлу. Ви також можете відключити тип файлу, якщо він увімкнено:

au FileType perl setlocal equalprg=perltidy

Як бачите, ви можете змусити його виконувати будь-яку команду там. Таким чином, ви можете легко зробити setlocal shiftwidth 4для своїх файлів * .c.


9

augroupдозволяє групувати пов'язані автокоманди в названі групи. (Дивіться тут, щоб дізнатися про групи автокоманд.) Ми використовуємо augroups, щоб додати автокоманди ~/.vimrcтаким чином, щоб не додавати дублікат кожного разу, коли ми його джерелом.

augroup vimrc
  autocmd!
augroup END

autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4

2
Було б корисно, якби ви пояснили, що це робить, і як це встановити, не всі будуть знати;)
Сет,

3

Використовується autocmd та FileType

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