SpaceVim CPP配置指南

2,850 阅读2分钟

本文介绍SpaceVim中为C/CPP设置开发环境,由于官网上相关信息比较简略,因此也踩了不少坑。在此总结一下,也算是对官网文档的一个补充。先上与CPP有关的配置。

[options]
# options for layers checkers
enable_neomake = true
enable_ale = false
lint_on_the_fly = false

# option for autocomplete
autocomplete_method = "coc"

# bootstrap configuration
bootstrap_before = "myspacevim#before"
bootstrap_after = "myspacevim#after"

# Enable autocomplete layer
[[layers]]
name = 'autocomplete'
auto-completion-return-key-behavior = "complete"
auto-completion-tab-key-behavior = "smart"

[[layers]]
name = 'checkers'
show_cursor_error = true
# enable = false

[[layers]]
name = "lang#c"
clang_executable = "clang"
[layer.clang_std]
c = "c11"
cpp = "c++1z"
objc = "c11"
objcpp = "c++1z"

[[layers]]
name = "lsp"
filetypes = [
  "c",
  "cpp"
]
[layers.override_cmd]
c = ["clangd", "--limit-results=5"]
cpp = ["clangd", "--limit-results=5"]

[[layers]]
name = "format"

自动补全

自动补全功能是最重要也最常用的功能,SpaceVim中需要配置的插件有lsp(Language Server Protocol),lang#c以及autocomplete插件。具体原理是:lsp插件会提供一个客户端来调用lsp服务端,生成相关的信息,共autocomplete插件补全使用。lang#c插件是SpaceVim提供的语言前端,提供了相关的快捷键绑定,比如SPACE + L.

这套机制依赖了一个lsp服务端,CPP的lsp server有几个选择,这里我使用的是clangd。因此需要先安装clangd。

brew install llvm # for macos
conda install clang clang-tools # for anaconda

另外coc补全插件依赖node。nodejs.org/en/download…. 注意,如果先安装了coc,那么启动的时候会报错:

[coc.nvim] javascript file not found, please compile the code or use release branch.

这个时候需要重新安装coc插件,再命令模式下:

:SPReinstall coc.nvim

在补全时,需要为clangd提供compile flags。以下是一个示例:

# compile_flags.txt
-I/usr/local/include
-I/user/include

完成了上面的配置之后,就可以愉快地写cpp的代码了。

Snippets

在使用了coc之后,默认的snippets补全就没有出现在补全列表里。需要安装coc的插件来完成补全,在命令模式下:

:CocInstall coc-neosnippet

Reference

spacevim.org/cn/use-vim-…