vim - 如何组织具有独特语法元素的 vim 插件?

标签 vim vim-plugin

我为自己编写了一个(基本)vim 插件,但我很难组织它。现在,它存在于两个文件中:一个位于 syntax/ 中。和 ftplugin/ 中的一个(两者都在 bundle/<plugin name> 中。我希望该插件对各种文件类型都有效,包括那些具有现有语法文件的文件

到目前为止,正在做类似 :set ft=<existing filetype>.<new filetype> 的事情在每个文件中都有效,但我无法弄清楚如何(一致地)从我的 .vimrc 中执行此操作。

那么,有两个问题:

  1. 我有正确的组织方法吗?是否有更简单的方法(例如)组合语法和插件文件?
  2. 如果是这样,附加我的自定义的“正确”方法是什么 filetype

最佳答案

虽然您没有提供很多细节,但您是对的 syntax/包含语法定义(即主要是 :syntax 命令)和 ftplugin/用于特定于文件类型的设置(即主要是 :setlocal:map <buffer> 等)。

I would like the plugin to be active for various file types, including those with existing syntax files.

正确的方法在很大程度上取决于原始语法与您的语法之间的关系。很难扩展任意语法,因为您必须考虑重叠并使用适当的 containedin=...语法扩展中的说明符。

复合文件类型 :setl filetype=c.doxygen自动检测或手动设置时效果很好。如果您不希望扩展名如此明显(并且某些插件不能很好地处理复合文件类型),您也可以 :runtime syntax/mine.vim总共~/.vim/after/syntax/original.vim文件(并对 ftplugin/ 执行相同的操作)。

另一种选择是 Hook :autocmd Syntax ...:autocmd FileType ... ;这可以避免编写许多短 stub 文件,这些文件只是 :runtime您的语法/ftplugin 添加。

关于vim - 如何组织具有独特语法元素的 vim 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17066460/

相关文章:

vim - 在vim脚本中返回findfile的驱动器号?

VIM:使用 imap 从插入模式调用函数?

python - 如何使用虚拟环境突出啤酒亮点

Vim 模板,获取文件名并使用它

vim - 如何在vim中更快地滚动

vim - 全新 Vim 安装、Vim 权限错误、Vundle 不起作用

vim - 如何从 MiniBufExplorer 窗口中删除状态行

vim - vim 与其他程序的接口(interface)

gradle - Eclipse JDT LS 和 Gradle - 资源异常 "Invalid project description"

vim - 如何在 VIM 中显示搜索结果出现的滚动条上启用突出显示?