Що насправді робить "плагін для філейного типу"?


11

Я розумію, що він завантажує ftplugin.vimфайл, але що він насправді робить? Чи встановлює параметри (залежно від типу файлу)?

Якби я включив цей рядок на початку мого vimrc

filetype plugin indent on

а потім я встановив декілька варіантів після цього рядка (наприклад, autoindent, smartindent тощо), чи не зіпсується би з ними? Як я можу знати, на які параметри впливає плагін файлу файлу або відступ файлу?

Відповіді:


7

Насправді хороший опис в help filetype.

Будь-які параметри, визначені для файлів, будуть встановлені за допомогою setlocal:

:setl[ocal] ...     Like ":set" but set only the value local to the
                    current buffer or window.  Not all options have [..]

Наприклад /usr/share/vim/vim80/ftplugin/javascript.vimвизначає:

setlocal commentstring=//%s

Оскільки локальні параметри мають пріоритет над глобальними, ваші .vimrcналаштування можуть бути проігноровані. У такому випадку вам потрібно створити файл ~/.vim/after/ftplugin/javascript.vim(з назвою файлового типу, який ви хочете змінити) і встановити там свої власні setlocalпараметри.

Найпростіший спосіб дізнатися , які параметри встановлені, щоб просто відкрити файли для типів файлів в /usr/share/vim/vim80/ftplugin, ../indentі ../syntax.


1
E492: Не команда редактора: плагін на [те саме для відступу]
Тоні

Останнє речення цієї відповіді неправильне. filetype plugin onі filetype indent onсправді є окремими командами, але обидві можна комбінувати, щоб отримати вихід filetype plugin indent on.
Руслан

@Ruslan спасибі, я вилучив це речення.
Лактак

2

Він визначає автокоманди, які будуть виконані, коли відкриється файл, що відповідає заданому шаблону. Ці автокоманди, sourceу свою чергу, розпізнають файли s, пов’язані з типом файлів.

У цих сценаріях плагінів для файлів ви зможете знайти / записати все, що можна вкласти в сценарій vim. Гарна практика - це ніколи не визначати глобальні речі, а виключно локальні речі. тобто:

  • локальні варіанти з :setlocal opt=value
  • локальні відображення с :[cnivsxot](nore)map <buffer> ...
  • локальні абревіатури з :iab-<buffer> ...& co
  • локальні команди с :command -b ...
  • локальні змінні с :let b:var = 42

Що стосується

  • меню, вам доведеться використовувати плагіни, що імітують місцеві меню, див. плагін Майкла Геддеса або мій модернізований вилка ;
  • функції, ви можете розмістити їх у ftplugins, але вони найкраще визначаються у плагінах для автоматичного завантаження.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.