Як визначити, який синтаксичний файл використовується?


50

Vim - це синтаксис, який смішно виділяє мій файл, і я хочу знати, який синтаксичний файл відповідає за цю поведінку. Як дізнатися, які файли синтаксису завантажив vim?

Відповіді:


39

Щоб дізнатися, які файли Vim фактично завантажили, виконайте виконання

:scriptnames

Це корисно. Тепер ось щось, в чому я не впевнений: якщо в цьому списку відображається файл синтаксису, чи гарантується, що файл синтаксису "активний"? Тут я бачу досить багато синтаксичних файлів.
Едвард З. Ян

7
Як правило, лише останній з перерахованих є "активним", і навіть цього може не бути, якщо ви вимкнули виділення синтаксису. Щоб побачити чинний синтаксис, виконайте виконання :echo b:current_syntax. Щоб побачити елементи синтаксису, які діють на даний момент, виконайте так, як запропонував Ingo та виконайте виконання :syntax list. Останнє може допомогти, якщо елементи синтаксису з декількох файлів синтаксису діють, як зазначив Інго.
garyjohn

1
На Mac OS XI модифікували /usr/share/vim/vim73/filetype.vim. Після використання вищевказаної команди я зрозумів, що вона використовує версію MacVim у ~/Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim. Якщо у вас встановлений MacVim, переконайтеся, що ви змінили правильний файл.
echamber

1
У вас можуть бути завантажені два синтаксичні файли, які мають одне ім’я. Наприклад, vim постачається з підсвічуванням синтаксису для ColdFusion, ( /usr/share/vim/vim81/syntax/cf.vimдля мене). Я встановив спеціальний cf.vim, оскільки стандартний датується. :scriptnamesпоказує обидва файли. За замовчуванням нижчий у списку сценаріїв; однак, колишній використовується. Якщо ви подивитесь /usr/share/vim/vim81/syntax/cf.vim, там є охорона if exists("b:current_syntax") finish endif. Тож у моєму випадку це scriptnamesбуло корисно, але мені довелося копати трохи глибше.
avejidah

31

Синтаксис поточного буфера можна запитувати через

:setlocal syntax?

Зазвичай це (але не обов'язково) відповідає файлевому типу буфера ( :setlocal filetype?).

Для глибшого погляду

:syntax list

показує всі визначення синтаксису (деякі синтаксиси (можуть) включати синтаксиси іншої мови, наприклад java, htmlдля розмітки коментарів JavaDoc).


Це те, що я шукав, виходячи з назви питання ОП. OP, звичайно, уточнює в описі, що він шукає фактичний файл синтаксису, але я вдячний, що ви залишите це тут, оскільки це одна з перших відповідей у ​​пошукових системах.
вербозе

4

Ви можете переглянути, якими типами файлів користуються зараз

:verbose set ft ?

Плагін, що обробляє тип файлу, швидше за все, знаходиться в

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