为什么无法为扩展的html添加链接标记:5?

it_*_*ure 3 html vim emmet

html:默认情况下将使用emmet扩展为5以下内容.

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

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想在我的vim中扩展html:5时将其自定义为以下内容.

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

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的尝试.

vim snippets.json
#to change the line containing doc": as
doc": "html>(head>meta[charset=${charset}]+meta:vp+meta:edge+link[href=\"\"])+body",
Run Code Online (Sandbox Code Playgroud)

为什么还没有链接标记什么时候扩展html:5?

zep*_*lin 6

我假设您使用的是emmet-vim插件.

它将完整emmet配置(包括片段部分)存储在.vim/autoload/emmet.vim文件中,这就是为什么它不会看到您对独立snippets.json文件所做的更改.

以下是vim.org上的插件文档:

您可以使用覆盖配置自定义扩展行为.此配置将在加载插件时合并.

let g:user_emmet_settings = {
\  'indentation' : '  ',
\  'perl' : {
\    'aliases' : {
\      'req' : 'require '
\    },
\    'snippets' : {
\      'use' : "use strict\nuse warnings\n\n",
\      'warn' : "warn \"|\";",
\    }
\  }
\}
Run Code Online (Sandbox Code Playgroud)

因此,要添加<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>"
\      }
\   }
\}
Run Code Online (Sandbox Code Playgroud)

现在,当您重新启动vim并键入html:5 <c-y>,它将产生您想要的:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link href="">
</head>
<body>
Run Code Online (Sandbox Code Playgroud)

或者,安装Vim WebAPI插件,并snippets.json使用它加载自定义,如下所示:

~/.vimrc

let g:user_emmet_settings = webapi#json#decode(join(readfile(expand('~/snippets.json')), "\n"))
Run Code Online (Sandbox Code Playgroud)

~/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>"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)