1

Я скопировал этот файл синтаксиса GLSL в /usr/share/vim/vim74/syntax/glsl.vim , его права доступа -rw-r--r-- же, как у других файлов синтаксиса.

Я gvim /tmp/x.glsl но он не активирует подсветку синтаксиса GLSL, как я ожидал.

Я захожу в Syntax > Show fileypes in menu и открывается полный спектр распознаваемых языков. Нет ничего под "G" для "GLSL", и нет ничего под "O" для "OpenGL".

Что мне нужно сделать, чтобы vim обратил внимание на новую спецификацию подсветки синтаксиса glsl.vim ?

1 ответ1

0

Syntax > Show filetypes in menu источниках действий меню $VIMRUNTIME/synmenu.vim . Если вы откроете это, вы увидите, что

  " The following menu items are generated by makemenu.vim.

Таким образом, кажется, что это статичная вещь, созданная во время сборки Vim. К сожалению, он не принимает добавленные или специфичные для пользователя синтаксисы.

Директория /usr/share/vim/ управляется менеджером пакетов вашего дистрибутива. Если вы поместите туда файлы, они могут потеряться при переустановке или обновлении Vim. Не делай этого. Простое решение - поместить его в ~/.vim/syntax/ ; тогда это относится только к вам. [1]

Vim различает подсветку синтаксиса и типы файлов. Чтобы применить добавленный синтаксис, вам необходимо обнаружить файлы GLSL. :help new-filetype расскажет вам, как это сделать.

Один (модульный) способ сделать это - создать ~/.vim/ftdetect/glsl.vim со следующим содержимым:

au BufRead,BufNewFile *.glsl        set filetype=glsl

Вам также необходимо :filetype on и :syntax on в вашем ~/.vimrc , но это очень распространенные настройки, так что, вероятно, они уже есть.


[1] Если у вас действительно многопользовательская система и вам нужно сделать ее доступной для всей системы, поместите ее где-нибудь еще в 'runtimepath' . В зависимости от вашего дистрибутива, возможно, уже есть предварительно настроенный путь (например, в /etc/vim/vimrc в Debian) или возможность получить конфигурацию, специфичную для системы (например, /etc/vim/vimrc.local), и вы можете увеличить 'runtimepath' там.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .