VSCode中已存在于/usr/bin的clang-format提示不可用问题求助
这种明明系统终端能找到工具,但VSCode却提示文件不存在的问题确实挺闹心的,我之前也碰到过类似的环境变量差异问题,给你几个具体的排查方向:
先确认系统里clang-format的实际文件关联
打开系统终端,运行ls -l /usr/bin/clang-format*,看看输出里有没有clang-format-11这个文件。很多时候系统里的clang-format是clang-format-11的软链接,但如果只装了基础的clang-format包,可能根本没有单独的clang-format-11可执行文件。要是发现确实没有这个文件,直接把VSCode扩展的clang-format.executablePath配置改成/usr/bin/clang-format就行。对比系统终端和VSCode内置终端的环境变量
有时候VSCode启动时不会加载完整的用户环境配置(比如.bashrc或.zshrc里的内容),导致PATH路径和系统终端不一样。分别在系统终端和VSCode内置终端运行echo $PATH,对比两者的输出,看看/usr/bin是不是在VSCode的PATH列表里,或者有没有其他路径差异。另外,在VSCode终端里运行which clang-format,拿到它的实际路径,直接把这个路径填到扩展配置里。检查Clang-format扩展的配置细节
打开VSCode设置(快捷键Ctrl+,),搜索clang-format.executable,仔细核对你填的路径是否正确。如果不确定,直接填clang-format(让系统自动查找)或者你通过which命令拿到的绝对路径。另外,建议把扩展更新到最新版本,旧版本偶尔会有路径解析的bug。测试VSCode终端的权限和路径可用性
在VSCode内置终端里直接运行/usr/bin/clang-format --version,看看能不能正常输出版本信息。如果不行,要检查是不是VSCode的启动用户和安装clang-format的用户不一致?比如你用普通用户装的工具,但用sudo code启动了VSCode,这时候会导致权限和路径都不对。确认系统的clang-format安装包情况
如果是Debian/Ubuntu系的系统,运行dpkg -l | grep clang-format,看看安装的包名称是clang-format还是clang-format-11。有些情况下,安装clang-format包只会提供clang-format可执行文件,而clang-format-11包才会同时提供两个命名的文件。如果是前者,就别纠结clang-format-11了,直接用clang-format就行。
内容的提问来源于stack exchange,提问作者André

