回答
由于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. 如何暂时关闭静态页面?
- 3. 暂时关闭打字自动完成
- 4. Resharper可以暂时关闭吗?
- 5. 如何暂时关闭Turbo Boost?
- 6. 如何在YAML中表示PHP关闭?
- 7. 当应用程序暂时关闭时,不会调用UIApplicationWillEnterForegroundNotification
- 8. Parent关闭时关闭Python
- 9. 自动关闭暂存缓冲区
- 10. Chrome开发工具:暂时关闭事件
- 11. 如何暂时关闭Vim中的插件?
- 12. 当屏幕关闭时,Internet连接显然暂停
- 13. 如何暂时关闭EF Code First中的IDENTITY列?
- 14. 设备关闭时音频暂停不播放背景Xcode 4.2
- 15. 是否暂时关闭UITableView委托的方法?
- 16. 从闪存暂时关闭应用程序
- 17. 无法在关闭弹出窗口时暂停视频
- 18. 关闭弹出窗口时暂停当前视频
- 19. 如何使用脚本暂时关闭某些unix cronjobs
- 20. 单击关闭图标时暂停或停止视频
- 21. 是否可以暂时关闭Oracle群集?
- 22. 在C#/ VB.net暂停系统关闭一段时间
- 23. 打开VAS - 服务暂时关闭(证书过期)
- 24. 如何检测React Native应用何时关闭(未暂停)?
- 25. 悬停时关闭模式窗口,关闭焦点时关闭
- 26. 关机时关闭电源时打开电源时关闭
- 27. 关闭时
- 28. JavaScript时关闭
- 29. 如何在Windows关闭时关闭FiddlerCore
- 30. Android蓝牙在关闭时关闭
为什么VSC甚至认为它应该应用YAML语法检查,它显然不是基于内容的YAML文件,也不是基于文件扩展名('.sls') – Anthon
你是对的,它不是YAML语法,而是最接近因为saltstate语法(yaml + jinja)还不被支持,所以没有可用的插件可用。这个.sls扩展名为yaml的原因是因为我的filename_association集合。 –