VSCODE 暂时关闭 yaml linting
VSC temporarily turn off yaml lintin
正在尝试找到一种方法来暂时关闭该文件的红线。
由于这根本不是有效的 YAML,但您想将其编辑为 YAML,
你应该把它变成有效的 YAML。如果您关闭错误,
相反,您可能不会拥有 YAML 的所有优势
编辑模式。
如果 saltstate 允许您更改 block_start_string
和
variable_start_string
jinja2 使用你可以将 {%
更改为 #%
(或者
###%
如果 #%
和 ###%
自然出现在您的来源中),并且
将 {{
更改为 <{
(或 <<{
,您明白了)。如果你打电话
然后直接使用 jinja2 传递给 FireSystemLoader
:
block_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 序列,并添加了一个 one-line header 注释,其中包含用于文件的实际模式。然后你应该能够
编辑 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 程序(即解码和 运行)。
也许尝试禁用 yaml.schemaStore ?
进入settings.json并添加:
"yaml.schemaStore.enable": false
正在尝试找到一种方法来暂时关闭该文件的红线。
由于这根本不是有效的 YAML,但您想将其编辑为 YAML, 你应该把它变成有效的 YAML。如果您关闭错误, 相反,您可能不会拥有 YAML 的所有优势 编辑模式。
如果 saltstate 允许您更改 block_start_string
和
variable_start_string
jinja2 使用你可以将 {%
更改为 #%
(或者
###%
如果 #%
和 ###%
自然出现在您的来源中),并且
将 {{
更改为 <{
(或 <<{
,您明白了)。如果你打电话
然后直接使用 jinja2 传递给 FireSystemLoader
:
block_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 序列,并添加了一个 one-line header 注释,其中包含用于文件的实际模式。然后你应该能够
编辑 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 程序(即解码和 运行)。
也许尝试禁用 yaml.schemaStore ?
进入settings.json并添加:
"yaml.schemaStore.enable": false