回答
由於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序列和添加一個單行頭註釋與用於該文件的實際模式。然後您應該能夠 編輯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程序(即解碼並運行)。
原諒我無知,我是新來的VSC。我瞭解Python,但我不明白這將如何在VSC中工作。 –
@MoAli在** VSC中這不起作用**,它使文件更正YAML,因此當您使用VSC打開它時,它不會顯示您發佈的圖像指示的問題。唯一的問題就是你必須確保鹽酸鹽能夠接受這些變化,或者在啓動鹽酸鹽之前將這些變化回退。順便說一句,你確定你正在使用salstate而不是[salststack](https://en.wikipedia.org/wiki/Salt_(software)) – Anthon
感謝您的澄清。我正在使用saltstack。 salt中的.sls文件被稱爲saltstate,因此被稱爲saltstate。 –
- 1. 暫時關閉鈴聲
- 2. NHibernate - 暫時關閉標識
- 3. 暫停和關閉
- 4. Resharper可以暫時關閉嗎?
- 5. Heroku:暫時關閉應用程序
- 6. 暫時關閉打字自動完成
- 7. 暫時關閉自動屏幕旋轉
- 8. 如何暫時關閉靜態頁面?
- 9. 如何暫時關閉Turbo Boost?
- 10. 如何在YAML中表示PHP關閉?
- 11. 如何在刪除記錄時暫時關閉此錯誤?
- 12. 當應用程序暫時關閉時,不會調用UIApplicationWillEnterForegroundNotification
- 13. 如何暫停關閉RadWindow關閉事件?
- 14. Parent關閉時關閉Python
- 15. 自動關閉暫存緩衝區
- 16. 在Matlab中關閉/暫停過程
- 17. 如何在關閉之前暫停cmd?
- 18. VSC++ 2010:-Zm135
- 19. 當屏幕關閉時,Internet連接顯然暫停
- 20. 如何使用腳本暫時關閉某些unix cronjobs
- 21. jQuery requestAnimationFrame在關閉瀏覽器焦點時禁用暫停
- 22. 單擊關閉圖標時暫停或停止視頻
- 23. Python:在應用程序關閉時暫停for循環
- 24. Howto暫時關閉Visual Studio 2010中的自動格式化
- 25. 暫時關閉數據庫表 - 如何優化?
- 26. 打開VAS - 服務暫時關閉(證書過期)
- 27. 關閉彈出窗口時暫停當前視頻
- 28. 暫時關閉基於導軌的網站
- 29. Chrome開發工具:暫時關閉事件
- 30. Javascript Opera - 關閉文檔正文滾動(暫時)
爲什麼VSC甚至認爲它應該應用YAML語法檢查,它顯然不是基於內容的YAML文件,也不是基於文件擴展名('.sls') – Anthon
你是對的,它不是YAML語法,而是最接近因爲saltstate語法(yaml + jinja)還不被支持,所以沒有可用的插件可用。這個.sls擴展名爲yaml的原因是因爲我的filename_association集合。 –