Vim 的 'dot-separated' 双文件类型时尚

标签 vim macos-sierra vim-plugin

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

两者都可以很好地独立工作,但没有机会按照有关点分隔文件类型的 Vim 文档将它们一起加载到文件类型 Notes.txtfmt 的文件中。

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

$/.vim/after/ftplugin/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

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

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

换句话说,在我的例子中,自动命令可以更改文件类型,但不能加载 txtfmt 插件,该插件仅在重复文件类型命令时加载。

对此有什么建议吗?

谢谢

最佳答案

如果 Notes 插件有文件类型检测(显然没有,并且文件类型仅由插件提供的命令设置),我会将其覆盖为

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

就您而言,我不会使用复合文件类型,而是简单地在 ~/.vim/after/ftplugin/notes.vim 中模拟其效果:

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

我还没有测试过它,但它更简单,因此希望比您当前 Hook FileType 事件的解决方案更强大。

关于Vim 的 'dot-separated' 双文件类型时尚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45717502/

相关文章:

Vim: w 按子字移动

search - 有选择地设置 iskeyword

Vim 脚本 :execute command passing numeric prefix

java - SoftLayer SSL VPN 门户 java.lang.NullPointerException @macOS Sierra

Vim 绑定(bind)将光标下的单词括在双花括号中

Vim (vim + nvim) 多次源文件

search - vim 搜索和替换仅限于视觉 block 模式下的突出显示

Vim:停止 "existing swap file"警告

python - 无法安装 mysql python 连接器 macOS High Sierra

bash - 新安装docker后无法运行docker命令