C++
Zed 原生支持 C++。
- Tree-sitter: tree-sitter/tree-sitter-cpp
- 语言服务器: clangd/clangd
二进制文件
您可以配置 Zed 应该使用的 clangd
二进制文件。
要使用自定义位置的二进制文件,请将以下内容添加到您的 settings.json
中
{
"lsp": {
"clangd": {
"binary": {
"path": "/path/to/clangd",
"arguments": []
}
}
}
}
如果您想禁止 Zed 查找 clangd
二进制文件,您可以将 ignore_system_version
设置为 true
{
"lsp": {
"clangd": {
"binary": {
"ignore_system_version": true
}
}
}
}
参数
您可以将任意数量的参数传递给 clangd。要查看所有可用选项,请从命令行运行 clangd --help
。例如,使用 --function-arg-placeholders=0
,补全仅包含函数调用的括号,而默认值 (--function-arg-placeholders=1
) 补全还包含方法参数的占位符。
{
"lsp": {
"clangd": {
"binary": {
"path": "/path/to/clangd",
"arguments": ["--function-arg-placeholders=0"]
}
}
}
}
格式化
默认情况下,Zed 将使用 clangd
语言服务器来格式化 C++ 代码。Clangd 与 clang-format
CLI 工具相同。要配置它,您可以添加一个 .clang-format
文件。例如
---
BasedOnStyle: LLVM
IndentWidth: 4
---
Language: Cpp
# Force pointers to the type for C++.
DerivePointerAlignment: false
PointerAlignment: Left
---
有关选项的完整列表,请参阅 Clang-Format 样式选项。
您可以通过 cmd-shift-i|ctrl-shift-i 或命令面板中的 editor: format
操作触发格式化,或者通过将 format_on_save
添加到您的 Zed 设置中
"languages": {
"C++": {
"format_on_save": "on",
"tab_size": 2
}
}
更多服务器配置
通常,在项目的根目录中,创建一个 .clangd
文件来设置额外的配置是很常见的。
CompileFlags:
Add:
- "--include-directory=/path/to/include"
Diagnostics:
MissingIncludes: Strict
UnusedIncludes: Strict
有关 clangd 配置文件的更高级用法,请查看他们的官方页面。
编译命令
对于某些项目,Clangd 需要一个 compile_commands.json
文件才能正确分析您的项目。此文件包含编译数据库,该数据库告诉 clangd 如何构建您的项目。
CMake 编译命令
使用 CMake,您可以通过将以下行添加到您的 CMakeLists.txt
来自动生成 compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
构建您的项目后,CMake 将在构建目录中生成 compile_commands.json
文件,clangd 将自动拾取它。