Изменение типа файла на основе расширения файла в vim

Я хочу изменить тип файла на основе расширения файла в vim.

У меня есть следующий код в моем .vimrc

autocmd BufNew,BufNewFile,BufRead *.txt,*.text,*.md,*.markdown setlocal ft=markdown

Но когда я открываю файл с расширением .md файл, тип файла не меняется. Я запускаю команду :set ft, и она показывает вывод как filetype=modula2.

Я делаю что-то не так?

Редактировать:

Я начал отладку, переименовав свой старый файл .vimrc и создав новый только с этой строкой. Он работал правильно. Затем я заменил свой старый файл .vimrc, и все работает нормально. Думаю, это было из-за некоторых проблем в каком-то дополнении, которое я использую.

Но принимая ответ ZyX, так как он подумал, что это альтернативный способ сделать это.


person Sudar    schedule 07.10.2012    source источник
comment
Выглядит хорошо для меня. Вы уверены, что в вашем vimrc или плагине нет конфликтующей строки?   -  person Prince Goulash    schedule 07.10.2012
comment
Я в основном уверен, что в моем vimrc нет конфликтующих строк. Но есть ли определенный способ узнать, есть ли конфликт?   -  person Sudar    schedule 07.10.2012
comment
Самый простой способ — использовать новый vimrc, в котором это единственная строка (конечно, резервное копирование существующего vimrc). Затем посмотрите, сможете ли вы воспроизвести поведение.   -  person Prince Goulash    schedule 07.10.2012
comment
Скорее всего из-за моего первого предположения: в новом vimrc именно с этой строкой нет команды filetype … on. Если бы это были проблемы с надстройками, то замена только vimrc не должна работать (если вы не используете VAM или Vundle, у которых есть список используемых плагинов, обычно определенный в vimrc).   -  person ZyX    schedule 11.10.2012
comment
Это определенно не первый вариант, потому что я явно установил тип файла. Я использую Vundle для управления надстройками. Я бы отладил его больше, когда у меня будет немного свободного времени. Но пока работает нормально.   -  person Sudar    schedule 12.10.2012


Ответы (3)


Интересно, идет ли эта строка до или после filetype … on. В первом случае попробуйте поставить ее (вашу автокоманду) после этой строки. Лучше поместить его в ~/.vim/ftdetect/markdown.vim и использовать setfiletype markdown вместо setlocal ft=markdown:

augroup filetypedetect
    autocmd BufNew,BufNewFile,BufRead *.txt,*.text,*.md,*.markdown :setfiletype markdown
augroup END

: это способ делать такие вещи по умолчанию. В этом случае ~/.vim должен идти перед /usr/share/vim/* путями в опции 'runtimepath' (по умолчанию).

person ZyX    schedule 07.10.2012

Я создал файл ~/vim/ftdetect/markdown.vim с этой строкой

autocmd BufNewFile,BufRead *.md,*.mkdn,*.markdown :set filetype=markdown

При чтении документов для типа файла setfiletype устанавливается только в том случае, если тип файла не установлен. Поэтому вам нужно использовать set для безусловного изменения типа файла.

person xdg    schedule 18.04.2013

Мне удалось получить подсветку синтаксиса для альтернативных расширений файлов, создав переименованные копии целевого файла синтаксиса в каталоге Vim\vim74\syntax.

Чтобы *.md открывался как .markdown:

скопировать markdown.vim md.vim

или вставьте копию markdown.vim в папку синтаксиса, затем переименуйте копию в md.vim.

(запуск vim74 на win7)

person james b    schedule 08.02.2016