-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。 –