Ответ 1
Причина проблемы
Чтобы понять, какой script установил этот тип файла, я выполнил следующую команду после редактирования foo.md.
:verbose set filetype?
Я нашел следующий вывод.
filetype=modula2
Last set from /usr/share/vim/vim74/filetype.vim
В/usr/share/vim/vim74/filetype.vim, я нашел следующие строки.
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,README.md setf markdown
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2
Эти строки показывают, что при редактировании README.md тип файла имеет значение markdown
, но при редактировании любого другого файла с расширением имени .md тип файла имеет значение modula2
. Другими словами, файлы *.md распознаются как исходный код Modula-2, но для README.md делается исключение для его распознавания как код Markdown, возможно, из-за растущей популярности файлов README.md в GitHub.
Решение
Добавьте следующий оператор в ~/.vimrc в set filetype=markdown
для всех файлов .md.
autocmd BufNewFile,BufRead *.md set filetype=markdown
В этом заявлении говорится, что при запуске редактирования нового файла, который не существует или при запуске редактирования нового буфера, после прочтения файла в буфер, если файл соответствует шаблону *.md
, тогда set filetype=markdown
.
Update
В обновленной версии Vim, которая у меня есть, я обнаружил, что этот вопрос больше не существует.
$ vim --version | head -n 2
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 31 2015 23:36:07)
Included patches: 1-488, 576
$ grep -E "markdown|modula2" /usr/share/vim/vim74/filetype.vim
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md setf markdown
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi setf modula2
Патч ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.860, похоже, сделал это изменение. Тем не менее, я немного смущен тем, как эти изменения, которые, как представляется, доступны в патче 860, доступны в моей версии Vim, которая включает только патчи 1-448, 576.