默认情况下,html:5 将使用 emmet 扩展如下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

</body>
</html>

我想在 vim 中扩展 html:5 时将其自定义如下。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link  href="" >
</head>
<body>

</body>
</html>

这是我的尝试。
vim snippets.json
#to change the line containing doc": as
doc": "html>(head>meta[charset=${charset}]+meta:vp+meta:edge+link[href=\"\"])+body",

为什么在展开 html:5 时仍然没有链接标签?

最佳答案

我假设您正在使用 emmet-vim 插件。

它在里面存储了完整的 emmet 配置,包括代码段部分.vim/autoload/emmet.vim 文件,这就是为什么它看不到您对独立 snippets.json 文件所做的更改。

vim.org 上的 plugin documentation 是这样说的:


let g:user_emmet_settings = {
\  'indentation' : '  ',
\  'perl' : {
\    'aliases' : {
\      'req' : 'require '
\    },
\    'snippets' : {
\      'use' : "use strict\nuse warnings\n\n",
\      'warn' : "warn \"|\";",
\    }
\  }
\}

因此,您需要做的是将 <link/> 添加到 html:5 片段中,将以下内容添加到您的 ~/.vimrc 文件中:
let g:user_emmet_settings = {
\  'html' : {
\      'snippets' : {
\            'html:5': "<!DOCTYPE html>\n"
\                    ."<html lang=\"${lang}\">\n"
\                    ."<head>\n"
\                    ."\t<meta charset=\"${charset}\">\n"
\                    ."\t<title></title>\n"
\                    ."\t<link href=\"\">"
\                    ."</head>\n"
\                    ."<body>\n\t${child}|\n</body>\n"
\                    ."</html>"
\      }
\   }
\}

现在,当您重新启动 vim 并键入 html:5 <c-y>, 时,它​​将产生您想要的内容:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link href="">
</head>
<body>


或者,安装 Vim WebAPI plugin ,并使用它加载您的自定义 snippets.json,如下所示:
~/.vimrc
let g:user_emmet_settings = webapi#json#decode(join(readfile(expand('~/snippets.json')), "\n"))
~/snippets.json
{
"html" : {
    "snippets": {
        "html:5": "<!DOCTYPE html>\n <html lang=\"${lang}\">\n<head>\n \t<meta charset=\"${charset}\">\n \t<title></title>\n \t<link href=\"\"> </head>\n <body>\n\t${child}|\n</body>\n </html>"
        }
    }
}

关于html - 为什么不能为扩展的 html :5? 添加链接标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44492497/

10-10 17:07