4.1 KiB
title | categories | image | description | type | comments | commentsID | ||
---|---|---|---|---|---|---|---|---|
Use Vim as a C/C++ IDE |
|
https://user-images.githubusercontent.com/13142418/58743787-db2bee80-846a-11e9-9b19-17202ac542c9.png | A general guide for using SpaceVim as C/C++ IDE, including layer configuration, requiems installation and usage. | article | true | Use Vim as a C/C++ IDE |
Blogs >> Use Vim as a C/C++ IDE
This is a general guide for using SpaceVim as a C/C++ IDE, including layer configuration and usage. Each of the following sections will be covered:
- Enable language layer
- Syntax highlighting
- code completion
- alternate file jumping
- code running
- Syntax lint
- code format
- REPL support
Enable language layer
To add C/C++ language support in SpaceVim, you need to enable the lang#c
layer. Press SPC f v d
to open
SpaceVim configuration file, and add following configuration:
[[layers]]
name = "lang#c"
for more info, you can read the lang#c layer documentation.
Syntax highlighting
The basic syntax highlighting is based on regular expression, If you want clang
based
syntax highlighting. Enable enable_clang_syntax_highlight
layer option:
[[layers]]
name = 'lang#c'
enable_clang_syntax_highlight = true
This option requires +python
or +python3
enabled and libclang
has been installed.
code completion
By default the autocomplete layer has been enabled, so after loading lang#c
layer, the code completion
for C/C++ language should works well.
If the autocomplete_method
is deoplete
, then Shougo/deoplete-clangx
will be loaded in lang#c
layer.
If the autocomplete_method
is asyncomplete
, then wsdjeg/asyncomplete-clang.vim
will be loaded.
If the autocomplete_method
is neocomplete
, Then Rip-Rip/clang_complete
will be loaded.
You can check the value of autocomplete_method
via :SPSet autocomplete_method
.
alternate file jumping
To manage the alternate file for a project, you may need to create a .project_alt.json
file in the root of your
project.
for exmaple, add following content into the .project_alt.json
file:
{
"*.c": {"alternate": "{}.h"},
"*.h": {"alternate": "{}.c"}
}
with this configuration, you can jump between the alternate file via command :A
code running
The default code running key binding is SPC l r
. It will compile and run current file asynchronously.
And the stdout will be shown on a runner buffer.
The default runner compile option is defineded in clang_std
and clang_flag
option.
If you want to use c11
, you can change clang_std
option to:
[[layers]]
name = "lang#c"
[layer.clang_std]
cpp = "c11"
You can also create a .clang
file in the root directory of you project. Within this
file, all compile option should be defineded in it. for example:
-I/home/test
-I/user/std/include
Syntax lint
The checker layer provides syntax checking for many programming languages.
Including C/C++, and the default plugin is neomake. The default
lint for C/C++ is gcc
/g++
. These commands also read configuration in .clang
file.
code format
The format layer use neoformat as default tool to format code, it will format current file.
And the default key binding is SPC b f
.
[[layers]]
name = "format"
REPL support
Start a igcc
inferior REPL process with SPC l s i
. After the REPL process being started, you can
send code to inferior process, all key bindings prefix with SPC l s
, including sending line, sending selection or even
send whole buffer.