Невозможно установить подсветку синтаксиса автоматически в Vim - PullRequest
4 голосов
/ 27 июня 2009

В моем .vimrc

есть следующее
syntax on
filetype plugin indent on       # Thanks to Jeremy

Я бегу

vim ~/.vimrc

Я получил правильную подсветку синтаксиса.

В моем .vimrc содержится много файлов. Мой .vimrc - это как дорожная карта для меня, где я перемещаюсь по

CTRL-W f

Проблема возникает при переходе к файлу, который я получил: без цветов .

Все мои исходные файлы содержат слово Vim в их PATH. Возможно, можно использовать этот факт для решения проблемы.

Как обеспечить автоматическую подсветку синтаксиса для исходных файлов?

Ответы [ 5 ]

11 голосов
/ 27 июня 2009

Конечные файлы заканчиваются на ".vim"? Если нет, то обнаружение типов файлов в vim может не определить, что эти файлы содержат vim-script. Вы можете либо переименовать файлы так, чтобы они заканчивались на .vim, либо добавить автокоманду для правильной установки типа файла.

Чтобы сделать последнее, вы можете добавить что-то подобное в ваш .vimrc:

au! BufNewFile,BufRead PATTERN set filetype=vim

замена "PATTERN" на шаблон файла, который будет соответствовать рассматриваемым файлам.

EDIT:

См. :help autocmd-patterns о том, как работают шаблоны:

The file pattern {pat} is tested for a match against the file name in one of
two ways:
1. When there is no '/' in the pattern, Vim checks for a match against only
   the tail part of the file name (without its leading directory path).
2. When there is a '/' in the pattern,  Vim checks for a match against the
   both short file name (as you typed it) and the full file name (after
   expanding it to a full path and resolving symbolic links).

В частности, обратите внимание на этот пример:

Note:  To match part of a path, but not from the root directory, use a '*' as
the first character.  Example: >
    :autocmd BufRead */doc/*.txt    set tw=78
This autocommand will for example be executed for "/tmp/doc/xx.txt" and
"/usr/home/piet/doc/yy.txt".  The number of directories does not matter here.

В вашем случае вы, вероятно, хотите что-то вроде:

au! BufNewFile,BufRead */Vim/* set filetype=vim
3 голосов
/ 20 апреля 2011

Чтобы заставить vi считать, что мои файлы jQuery ( .jq) на самом деле являются javascript ( .js), я сделал: -

Создание и / или редактирование файла vimrc ...

e@dev3:~$ vi ~/.vimrc

Добавьте следующий текст (нажмите i, чтобы вставить) ...

if has("syntax")
  syntax on
  filetype on
  au BufNewFile,BufRead *.jq set filetype=javascript
endif

Сохранить файл vimrc ...

[esc]:wq[enter]

Далее, чтобы найти поддерживаемые типы файлов, посмотрите в filetype.vim ...

e@dev3:~$ sudo locate filetype.vim
/usr/share/vim/vim72/filetype.vim
e@dev3:~$ sudo grep "\.js[, ]" `locate filetype.vim`
au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx      setf javascript

... тип файла - это setf arg ...

e@dev3:~$ sudo grep "\.js[, ]" `locate filetype.vim` | cut -d " " -f 4
javascript

Веселитесь.

1 голос
/ 27 июня 2009

Какое расширение у ваших файлов? Расширение является обычным способом для Vim определить, какой синтаксис должен использоваться для подсветки, а для исходных файлов (vimscript) это должен быть .vim. Похоже, что это не так, если вы видите проблему только с исходными файлами, а не с какими-либо другими.

0 голосов
/ 27 июня 2009

Это может быть:

  • опция "filetype"
  • тип файла не может быть автоматически определен vim

filetype on сортирует первое, а второе можно исправить с помощью autocmds на основе расширений файлов.

0 голосов
/ 27 июня 2009

Один очевидный вопрос: нет ли строки, говорящей «синтаксис выключен» в файлах, которые вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...