Нет подсветки синтаксиса для файлов .md?

15

Vim правильно выделяет .markdownфайлы, но кажется, что они не знакомы с .mdтипами файлов. Комментарий к вопросу /programming/10964681, по- видимому, подразумевает, что .mdэто неправильное расширение файла, используемое для файлов уценки. Я немного смущен.

Это .mdнеправильное расширение? Если нет, почему Vim не выделяет его синтаксис?

Версия Vim: 7.4

krystah
источник
У меня есть подсветка синтаксиса в .mdиспользовании 7.3. Может быть решение о конфигурации. Это GNU / Linux Debian Wheezy.
174140
1
"Это .mdнеправильное расширение?" Создатель Markdown недавно прокомментировал эту тему.
Майк Сепловиц

Ответы:

12

Анализ

В $VIMRUNTIME/filetype.vim, вы найдете это:

" Markdown
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md  setf markdown

Таким образом, только README.mdопределяется как уценка. Одна причина может быть найдена в том же файле при поиске*.md

" Modula 2
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2

объяснение

В отличие от типов MIME (где существует реестр), расширения файлов не стандартизированы, и (особенно для коротких) несколько возможных значений перекрываются. Вам решать, как вы хотите, чтобы они обрабатывались. Если это гораздо более вероятно, это foo.mdозначает, что файл Markdown, чем исходный код Modula 2, просто переопределите значение по умолчанию Vim, например, через

au BufNewFile,BufRead *.md  setf markdown

в ~/.vim/ftdetect/markdown.vimили как описано в :help new-filetype.

Инго Каркат
источник
9

autocmd BufRead,BufNew *.md setf markdown

я не работал на vim 7.4, поэтому мне пришлось использовать «старый» традиционный способ установки типа файла:

autocmd BufRead,BufNew *.md set filetype=markdown

и это *.mdправильно подсвечивает файлы.

Patryk
источник
3
Это тот, который вы хотите. Лучшие ответы не работают.
Майкл Фокс
8

Добавьте эти строки в ваш ~/.vimrc:

augroup markdown

    " remove previous autocmds
    autocmd!

    " set every new or read *.md buffer to use the markdown filetype 
    autocmd BufRead,BufNew *.md setf markdown

augroup END
romainl
источник
1
Зачем переустанавливать тип файла для каждой записи буфера? Канонический набор событий ftdetect есть BufNewFile,BufRead, и этого должно быть достаточно и здесь.
Инго Каркат
1

Попробуйте завершить файл с помощью .markdown - он может быть длинным, но это помогает мне.

Билли Макклоски
источник
Да, это то, что работает. Однако, если .mdфайлы являются файлами уценки, я намерен заставить Vim правильно с ними работать! GitHub README использует .mdтакже.
krystah
Вы также можете использовать .markdownGitHub. В любом случае, используйте либо, .mdлибо .markdownпотому что другие менее широко поддерживаются.
nyuszika7h