使用文件类型插件文件 (ftplugin) 更改 vim / neovim 中的文件类型

Using a file type plugin file (ftplugin) to change the file type in vim / neovim

自动执行创建 multimarkdown 笔记的步骤。我想让 neovim 根据第一行的内容更改文件的文件类型。我所有的 multimarkdown 笔记都以 title 开头,例如

title: Euclidean Distance

理想情况下,我希望将其保留在我的 init.vim (.vimrc) 文件中,但是当我将以下内容放入我的 [=14] 时,neovim 不会在 read/open 上更新缓冲区=] 文件.

" Change the file type to markdown
if getline(1) =~ '^title:'
   set ft=markdown
endif

如何让 neovim 检查文件的第一行并更改其类型或至少更改其语法。谢谢

我了解运行时不会监视所有文件。自动检查文件类型并进行更改的唯一方法是使用 autocmd 并通过 init.vim (.vimrc)

获取 ftplugin/txt.vim 文件

根据 :h new-filetype B 部分,您可以执行以下操作:

augroup txt_to_markdown
    autocmd!
    autocmd BufRead * if &filetype == 'text && getline(1) =~ '^title:' | set filetype=markdown | endif
augroup END

这与@PeterRincker 的回答吹响了同样的号角,但我认为您应该遵循 :help new-filetype-scripts 的描述(如果您的文件类型只能通过检查file) 与您的用例完美匹配。

这样,您将以下内容放入~/.vim/scripts.vim

if did_filetype()   " filetype already set..
    finish      " ..don't do these checks
endif
if getline(1) =~ '^title:'
    setfiletype markdown
endif