5

我正在尝试将以下vim 模式添加到我的全局.tern-config文件中:

// vim: set ft=json:
{
    plugins: {
    ...

但是,Tern 服务器无法启动,出现以下错误:

Failed to start server: 
Bad JSON in /Users/XXXXX/.tern-config: Unexpected token / in JSON at position 0

我怀疑这个错误的原因是JSON 缺乏对评论的支持。我应该注意到我.eslintrc文件中的相同模式行有效。

如何在我的.tern-config文件中包含 vim 模式行?

4

2 回答 2

7

如果放一个这样的物体

"_vim_": { "modeline": "/* vim: set ft=json noet ts=4 sw=4: */" }

作为 json 文件的顶级对象列表的第一个或最后一个条目,它将被 vim 用作模式行(只要该行在文件的开头或结尾出现足够接近,其中“足够接近”意味着:在vim 根据其 'modelines' 选项扫描模式线的行数,默认为 5)。

此外,应该仔细选择对象的名称(“_vim_”),以便 - 充其量 - 它会被使用文件作为输入的软件忽略,或者 - 至少 - 可以被软件的用户忽略(即,它不会导致任何被视为有害行为的副作用)。

于 2018-10-04T16:13:48.770 回答
2

您将无法在文件本身中执行此操作。JSON 不支持注释,这是一种非常无情的语法。

这可能适用于某些 JSON 文件,例如.eslintrc,但在其他文件中,您将不走运。更严格的 JSON 解析器不允许这样做,因此这取决于您目前使用的工具是基于哪个解析器构建的。

与其猜测哪些解析器是宽容的,哪些不是,你最好告诉 Vim 如何使用autocmd.

autocmd BufNewFile,BufRead *.tern-config set filetype=json
于 2017-01-18T00:27:55.533 回答