2013-05-22 4 views
0

У меня есть файл синтаксиса javascript в моей папке ~/.vim/syntax на ubuntu 12.04, но когда я открываю файл .js в ВИМ является использует синтаксис системы вместо этого:Vim загружает синтаксис системы после моего пользовательского синтаксиса, поэтому мой собственный синтаксис не применяется

Выход: scriptnames

1: /usr/share/vim/vimrc 
    2: /usr/share/vim/vim73/debian.vim 
    3: /usr/share/vim/vim73/syntax/syntax.vim 
    4: /usr/share/vim/vim73/syntax/synload.vim 
    5: /usr/share/vim/vim73/syntax/syncolor.vim 
    6: ~/.vim/filetype.vim 
    7: /usr/share/vim/vim73/filetype.vim 
    8: /usr/share/vim/vim73/plugin/getscriptPlugin.vim 
    9: /usr/share/vim/vim73/plugin/gzip.vim 
10: /usr/share/vim/vim73/plugin/matchparen.vim 
11: /usr/share/vim/vim73/plugin/netrwPlugin.vim 
12: /usr/share/vim/vim73/plugin/rrhelper.vim 
13: /usr/share/vim/vim73/plugin/spellfile.vim 
14: /usr/share/vim/vim73/plugin/tarPlugin.vim 
15: /usr/share/vim/vim73/plugin/tohtml.vim 
16: /usr/share/vim/vim73/plugin/vimballPlugin.vim 
17: /usr/share/vim/vim73/plugin/zipPlugin.vim 
18: ~/.vim/syntax/javascript.vim 
19: /usr/share/vim/vim73/syntax/javascript.vim 

Как я могу получить свой собственный синтаксис, чтобы обратиться к * .js файлы?

+0

Что заставляет вас верить, что пользовательский синтаксис не установлен должным образом? – FDinoff

ответ

1

У вас есть файл синтаксиса, размещенный в нужном месте, которое равно ~/.vim/syntax/javascript.vim. Причина, по которой файл синтаксиса системы показывает, что он был найден. Однако первые две строки в файле проверяют, был ли найден другой файл синтаксиса. Поскольку текущий синтаксис уже установлен, файл синтаксиса системы выходит без каких-либо действий.

Таким образом, пользовательский первый источник (и применяется все его выделение). Затем система получила источник. Вот почему вы видите как на выходе :scriptnames

Так что, чтобы получить vim для применения настраиваемых правил синтаксиса, вам нужно ничего не делать, потому что все файлы находятся в нужном месте.

+0

вы правы. оба синтаксиса используют почти ту же самую цветовую схему, поэтому я думал, что она не работает. – Atomix

1

В моих .../vim73/syntax/javascript.vim, я вижу следующий код в начале:

if !exists("main_syntax") 
    if version < 600 
    syntax clear 
    elseif exists("b:current_syntax") 
    finish 
    endif 
    let main_syntax = 'javascript' 
endif 

и в конце:

let b:current_syntax = "javascript" 
if main_syntax == 'javascript' 
    unlet main_syntax 
endif 

Я хотел бы предложить добавить let b:current_syntax = "javascript" к концу пользовательского файла синтаксис. На самом деле, я что проверить exists("b:current_syntax") в ряде файлов в каталоге синтаксиса, так что вы, вероятно, следует добавить проверку в начале твоей тоже:

if exists("b:current_syntax") 
    finish 
endif 
+0

Это пользовательский файл синтаксиса, который я использую: http://www.vim.org/scripts/script.php?script_id=1491 , и он имеет это. Нужно ли мне перезагружать мой сервер или что-то, чтобы он вступил в силу? – Atomix

+0

Нет, перезагрузка не требуется. Вы уверены, что ваш собственный синтаксис фактически не используется? Вы все равно увидите, что он загружает последний, даже если все, что он сделал, сразу же завершилось. Если у вас есть корень, я постараюсь переместить последний из них, чтобы подтвердить, что без него происходит что-то другое. –