使用文件类型插件文件 (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
自动执行创建 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