我在vscode安装了esp-idf,注意到一件怪事,esp-idf的终端在调试的时候,有的时候会引用代码中带注释的片段,发现英文正常,但是中文乱码。
还有就是代码自动跳转失效、右键跳转卡住等该如何解决?请看下文
vscode-esp-idf终端中文乱码

说它是终端也好,说它是监视器也对,仔细看发现不仅仅是中文注释乱码,当串口连接失败的时候,他的中文提示也是乱码的,那就说明乱码和代码没关系,是终端自身的问题。
我相信遇到这破事的朋友的电脑一定是Windows10及以上,如果是那就对了,esp-idf拓展默认调用的是Windows PowerShell,这个终端用的是Windows系统级语言编码,如需要支持中文则需要去Windows设置中开启,而不是在vscode中乱调,因为系统语言设置有最高优先级,会覆盖vscode中的设置。
设置系统语言编码则是按win+r,输入intl.cpl进入区域设置,然后会看到下面的内容:

运行会来到下面的区域设置,点管理,再从“非Unicode程序的语言”那点“更改系统区域设置”:

接下来勾选“Beta 版:使用 Unicode UTF-8 提供全球语言支持”,然后重启电脑,再打开vscode,已搞定。到处问题已解决,不用再往后看了。

esp-idf监视器全是乱码
什么你还在看?那说明你是一个爱学习的人,说点题外话,如果vscode-esp-idf不是中文乱码,而是全部乱码,那恭喜这是idf监视器的波特率不对,需要在vscode setting中设置波特率,搜索idf.monitorbaudrate就能找到,默认是空的,你填115200可解决问题;

esp-idf打开程序没显示UTF-8
如果vscode-esp-idf点开main代码,发现右下角没显示UTF-8,那就说明是vscode内部没开启UTF-8,同样是搜索setting中相关内容找到并开启,像这种是和编辑器相关的,搜索editor就能找到(没截图),记得默认是空的,填入UTF-8就行。
esp-idf自动补全、右键自动跳转失效
如果main程序没有自动补全,乱写一通也不给你提示,也没法跳转,那说明你没安装C/C++拓展,或者是你没有编译,或者是你编译了,但是没有将编译结果关联给C/C++组件,又或者是你没有为C/C++组件配置GCC编译器。
将编译结果关联给C/C++组件的方法是修改项目目录的c_cpp_properties.json文件,确保includePath和browsePath已填入当前项目的正确路径。C/C++组件就是去这些路径里查找编译结果来分析你的代码,而不是看你的程序文件。

esp-idf CMakeList代码补全失效
假如你打开vscode-esp-idf的CMakeList,发现你乱写他也不给你提示,那说明你没安装CMake Tools拓展,或者这个拓展没配置正确的编译器。这个CMake Tools对esp-idf不友好,因为esp-idf用的是交叉编译器,而CMake Tools用的是win/linus平台的编译器,结果就是esp-idf和CMake Tools在vscode中激烈的交火,esp-idf编译完程序都跑老久了,CMake Tools还在那一片红疯狂报错说你的CMakeList写的不对,引导你去修改,还说有个交叉编译器不认识,没听过。强迫症的你哪看的下那一片红的波浪线,于是你就改了,结果刚改完,esp-idf这边就炸了,开始疯狂报错…陷入不断循环。
于是你脑洞大开,为啥不为CMake Tools配置交叉编译器呢?于是你去尝试了,你将esp-idf的交叉编译器填到了Cmake Tools的编译器选项里,再次编译,结果还是炸了,在那报错,为什么,因为这个交叉编译器没法被CMake Tools正确使用,再往下我也不知道了,我直接卸载了CMake Tools,直接清净了。反正写的程序是C/C++,很少去动CMakeList,最多在CMakeList中添加一下库和宏定义什么的。
OK先写这么多,后面遇到啥值得写的再写。


被折叠的 条评论
为什么被折叠?



