-1

enter image description hereVSC暂时关闭YAML lintin

试图找到一种方式来暂时关闭红线仅针对该文件。

+0

为什么VSC甚至认为它应该应用YAML语法检查,它显然不是基于内容的YAML文件,也不是基于文件扩展名('.sls') – Anthon

+0

你是对的,它不是YAML语法,而是最接近因为saltstate语法(yaml + jinja)还不被支持,所以没有可用的插件可用。这个.sls扩展名为yaml的原因是因为我的filename_association集合。 –

回答

0

由于YAML无效,但您想将其编辑为YAML,您应该将其设置为有效的YAML。如果发生错误,您可能不会拥有YAML 编辑模式的所有优势。

如果saltstate允许您更改block_start_stringvariable_start_string Jinja2的使用可以改变{%#%(或 ###%如果#%###%自然地发生在你的源),并且还 变化{{<{(或<<{,你得到这个想法)。如果你想打电话 Jinja2的直接,你会然后再传递到FireSystemLoaderblock_start_string='<{'variable_start_string='#%'如果上述 是可能的,那么你必须改变你的输入文件只有一次, 做到这一点与编辑。

如果你无法控制saltstate做理智的事情,你仍然没有 卡住了,你有使用Python, ruamel.yaml和一些 支持包做多一点(免责声明:我是那些包的作者)。 安装带有:

pip install ruamel.yaml[jinja2] ruamel.std.pathlib 

然后编辑之前运行该程序:

from ruamel.yaml import YAML 
from ruamel.std.pathlib import Path 

yamlj2 = YAML(typ='jinja2') 
yamlrt = YAML() 
yaml_flow_style = YAML() 
yaml_flow_style.default_flow_style = True 

in_file = Path('init.sls') 
backup_file = Path('init.sls.org') 
in_file.copy(backup_file) 

data = yamlj2.load(in_file) 
with in_file.open('w') as fp: 
    # write the header with info needed for revers 
    fp.write('# ruamel.yaml.jinja2: ') # no EOL 
    yaml_flow_style.dump(yamlj2._plug_in_jinja2, fp) 
    yamlrt.dump(data, fp) 

这改变了违规的Jinja2序列和添加一个单行头注释与用于该文件的实际模式。然后您应该能够 编辑init.sls文件而不会收到所有这些错误。

在致电saltstate,不要运行以下命令:

from ruamel.yaml import YAML 
from ruamel.std.pathlib import Path 

in_file = Path('init.sls') 
yamlj2 = YAML(typ='jinja2') 
yamlrt = YAML() 
yamlnort = YAML(typ='safe') 
with in_file.open() as fp: 
    yamlj2._plug_in_jinja2 = yamlnort.load(fp.readline().split(':', 1)[1]) 
    data = yamlrt.load(fp) 
yamlj2.dump(data, in_file) 

如果你有这些文件的多个,你可能想利用你的 文件名从sys.argv中[1]。您可能实际上是从第二个Python程序调用salstate程序(即解码并运行)。

+0

原谅我无知,我是新来的VSC。我了解Python,但我不明白这将如何在VSC中工作。 –

+0

@MoAli在** VSC中这不起作用**,它使文件更正YAML,因此当您使用VSC打开它时,它不会显示您发布的图像指示的问题。唯一的问题就是你必须确保盐酸盐能够接受这些变化,或者在启动盐酸盐之前将这些变化回退。顺便说一句,你确定你正在使用salstate而不是[salststack](https://en.wikipedia.org/wiki/Salt_(software)) – Anthon

+0

感谢您的澄清。我正在使用saltstack。 salt中的.sls文件被称为saltstate,因此被称为saltstate。 –