Vim的'点分隔'双文件格式时尚

时间:2017-08-16 15:24:25

标签: vim macos-sierra vim-plugin

我很高兴在Mac Os Sierra的neovim命令行版本中加载NotesTxtfmt个插件。

两者都非常有效,但根据Vim关于点分隔文件类型的文档,没有机会在文件类型notes.txtfmt文件中加载它们。

我做的第一次尝试是遵循Notes文档,以便能够与Txtfmt一起工作并创建文件

$ / VIM /后/文件类型插件/ notes.vim

内容:

" Enable Txtfmt formatting inside notes.
setlocal filetype=notes.txtfmt

正如this讨论中所述,这种方法不起作用,创造了无限循环。 接下来,正如bpstahlman在上述帖子中的建议,我在.vimrc中添加了以下自动命令:

augroup TxtfmtInNotes
au!
au FileType * if expand("<amatch>") == "notes" | setlocalft=notes.txtfmt|endif
augroup END

现在,它似乎可以工作,因为它在Vim状态栏中声明了一个'notes.txtfmt'文件类型,在打开一个新的:Note缓冲区后立即。 坏消息:txtfmt插件没有加载,没有映射命令正在工作。

有趣:再做一次:setlocal ft=notes.txtfmt (应该已经通过建议的自动命令完成)所有内容都已正确加载。

换句话说,在我的情况下,自动命令在更改文件类型时起作用,但在加载txtfmt插件时不起作用,txtfmt插件仅在重复filetype命令时加载。

对此有何建议?

由于

1 个答案:

答案 0 :(得分:2)

如果Notes插件有文件类型检测(显然它没有&#39; t,文件类型只由插件提供的命令设置),我会覆盖它

:au BufNewFile,BufRead *.note setf notes.txtfmt

在您的情况下,我只是在~/.vim/after/ftplugin/notes.vim中模拟其效果,而不是使用复合文件类型

runtime! ftplugin/txtfmt.vim ftplugin/txtfmt_*.vim ftplugin/txtfmt/*.vim

我还没有对它进行过测试,但它更直接,因此希望比您当前挂钩FileType事件的解决方案更强大。