前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用指北-024-vscode插件推荐与C代码自动补全

使用指北-024-vscode插件推荐与C代码自动补全

原创
作者头像
yongliang
修改2024-06-26 21:16:00
1680
修改2024-06-26 21:16:00
举报
文章被收录于专栏:无问东西无问东西

vscode 是微软基于 electron 技术,开发的一款开源文本编辑器。由于出色的跨平台属性和丰富的插件生态,vscode 已成为目前最流行的文本编辑器。

vscode 独创的 LSP(language server protocol),为后续编辑器生态的繁荣,带来了新思路。

1. 插件推荐

  • C/C++ IntelliSense:C 代码提示插件(二选一)
  • Clangd:C 代码提示插件(二选一)
  • Chinese (Simplified) Language Pack:简体中文包
  • CMake Tools:cmake 插件
  • Crabviz:一个机遇 rust 的代码调用图绘制工具
  • IntelliCode:自动补全
  • Pylance:python 语法提示
  • Python:python 语法提示
  • Remote - SSH:远程 wsl 连接
  • WSL:链接 wsl 的插件
  • rust-analyzer:rust 语法提示
  • ShellCheck:shell 脚本语法提示
  • TONGYI Linma:阿里通义灵码

2. C代码提示

vscode 默认支持 c/c++ 语法提示,但是需要安装插件才能支持 c/c++ 语法高亮。目前 vscode 有两大插件。

2.1. C/C++ IntelliSense

微软官方 C/C++ IntelliSense 插件,支持语法提示、代码补全、代码重构等功能。以下是一个调用 ClangTidy 的示例配置。

代码语言:json
复制
"C_Cpp.codeAnalysis.clangTidy.checks.enabled": [
    "google-*",
    "modernize-*",
    "performance-*",
    "clang-analyzer-*",
    "misc-*"
],
"C_Cpp.codeAnalysis.clangTidy.checks.disabled": [
    "modernize-macro-to-enum",
    "misc-include-cleaner"
],

ClangTidy 是一个静态代码分析工具

2.2. Clangd

Clangd 是一个 C/C++ 语言服务器,支持语法提示、代码补全、代码重构等功能。由于 llvm 项目本身发展很快,如果想体验最新稳定版 Clangd ,可以自行从官网安装。

2.2.1 配置 apt 源(以 Ubuntu 20.04 为例)。
代码语言:bash
复制
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
cat > /etc/apt/sources.list.d/llvm-toolchin-focal-18.list << EOF
deb http://apt.llvm.org/focal/ llvm-toolchain-focal main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main
deb http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main
EOF
sudo apt update
sudo apt install clangd-18 llvm-18 clang-18

clangd 版本高于 13.0.0 以上版本才支持 enable-config 参数,对应的 vscode 配置如下:

代码语言:json
复制
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.onConfigChanged": "restart",
"cmake.exportCompileCommandsFile": true,
"clangd.fallbackFlags": [
    "-I${workspaceFolder}/include",
],
"clangd.inactiveRegions.useBackgroundHighlight": true,
"clangd.path": "/usr/bin/clangd-18",
"clangd.arguments": [
    "--enable-config",
    "--pretty",
    "--all-scopes-completion",
    "--cross-file-rename",
    // "--log=error",
    // "--completion-style=bundled",
    // "--header-insertion-decorators",
    // "--background-index",
    // "-j=5",
    // "--pch-storage=disk",
    // "--function-arg-placeholders=false",
    // "--compile-commands-dir=build",
    // "-header-insertion=never",
],
2.2.2. 如果想使用自带版本,可以执行以下命令。
代码语言:bash
复制
sudo apt install clangd llvm clang

vscode 对应的配置如下:

代码语言:json
复制
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.onConfigChanged": "restart",
// 等价于 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
"cmake.exportCompileCommandsFile": true,
"clangd.fallbackFlags": [
    "-I${workspaceFolder}/include",
],
"clangd.inactiveRegions.useBackgroundHighlight": true,
"clangd.path": "/usr/bin/clangd-18",
"clangd.arguments": [
    "--pretty",
    "--clang-tidy",
    "--clang-tidy-checks=cppcoreguidelines-*,performance-*,modernize-,google-",
    "-j=5"
]
2.2.3. 关于 clangd 配置文件说明

clangd 配置有入侵式和非入侵式,入侵式是指在项目根目录建立 .clangd 文件,非入侵式是指在系统配置目录建立 config.yaml 文件。

clangd 配置文件位置:

  • linux 系统:用户主目录/.config/clangd/config.yaml
  • windows 系统:C:\Users\用户名\AppData\Local\clangd\config.yaml

配置内容如下:

代码语言:yaml
复制
# clangd configuration file enable with --enable-config argument
# clangd required version upper 13.0.0
Index:
  Background: Build

CompileFlags:
  Add: [-xc, -Wall, -Wno-unused-function, -std=gnu99]
  Compiler: clang

Diagnostics:
  UnusedIncludes: None
  ClangTidy:
    Add: [
        "google-*",
        "modernize-*",
        "performance-*",
        "clang-analyzer-*",
        "misc-*"
    ]
    Remove: [
        modernize-macro-to-enum
      ]

3. 参考文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 插件推荐
  • 2. C代码提示
    • 2.1. C/C++ IntelliSense
      • 2.2. Clangd
      • 3. 参考文档
      相关产品与服务
      腾讯云代码分析
      腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档