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

Я работаю в системе (linux), которая всегда распознает файлы cpp (*.cc) как файлы tcl. Я не знаю, что это за тип файла, но я хотел переопределить его. Правильная подсветка синтаксиса выбирается, если я вручную делаю :set ft=cpp. Однако у меня возникли проблемы с автоматической настройкой, и я не хочу использовать параметр modeline. Мой собственный .vimrc не мешает (тот же результат, если я его переименую).

Из справки vim (:help ftplugin-override)

                                                        *ftplugin-overrule*
If a global filetype plugin does not do exactly what you want, there are three
ways to change this:

1. Add a few settings.
   You must create a new filetype plugin in a directory early in
   'runtimepath'.  For Unix, for example you could use this file: 
        vim ~/.vim/ftplugin/fortran.vim
  You can set those settings and mappings that you would like to add.  Note
   that the global plugin will be loaded after this, it may overrule the 
   settings that you do here.  If this is the case, you need to use one of the 
   following two methods.

Я использовал эту опцию раньше на другой машине, и это сработало. я пробовал

<file> .vim/ftplugin/tcl.vim
set filetype=cpp
"au BufRead,BufNewFile *     set filetype=cpp

Первая строка правильно устанавливает filetype (:set ft? возвращает cpp), но подсветка синтаксиса не такая же, как если бы я сказал :set ft=cpp. Это по-прежнему подсветка синтаксиса tcl. Вторая строка ничего не делает.

2. Make a copy of the plugin and change it. 
   You must put the copy in a directory early in 'runtimepath'.  For Unix, for 
   example, you could do this: 
        cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim
  Then you can edit the copied file to your liking.  Since the b:did_ftplugin
   variable will be set, the global plugin will not be loaded.
   A disadvantage of this method is that when the distributed plugin gets
   improved, you will have to copy and modify it again.

Кажется, в моем каталоге $VIMRUNTIME /usr/share/vim/vim72/ftplugin/ нет файла с именем tcl.vim.

3. Overrule the settings after loading the global plugin.
   You must create a new filetype plugin in a directory from the end of
   'runtimepath'.  For Unix, for example, you could use this file: 
        vim ~/.vim/after/ftplugin/fortran.vim
  In this file you can change just those settings that you want to change.

Имеет тот же эффект, что и 1. Что еще я могу попробовать? Заранее большое спасибо.


person Sebastian    schedule 30.08.2012    source источник


Ответы (1)


cpp является типом файла по умолчанию для файлов *.cc и *.cpp.

Тип файла tcl устанавливается только для *.tcl, *.tk, *.itcl, *.itk и *.jacl.

Я не вижу причин, по которым Vim по умолчанию будет использовать tcl при загрузке файла *.cc, но вы можете проверить, установлены ли эти файлы:

/usr/share/vim/vim7x/ftplugin/cpp.vim
/usr/share/vim/vim7x/indent/cpp.vim
/usr/share/vim/vim7x/syntax/cpp.vim

и если правильные проверки сделаны в:

/usr/shhare/vim/vim7x/filetype.vim

Вы единственный человек, работающий на этой машине? Пользуетесь ли вы моделями?

person romainl    schedule 30.08.2012
comment
блин, была моделька, которую я не видел! С какой стати мои коллеги установили это? спасибо ромэн! - person Sebastian; 31.08.2012
comment
Модели полезны, но ваша команда должна что-то стандартизировать. - person romainl; 31.08.2012