1 代码格式化
C语言代码的格式化需要使用clang-format
,而clang-format
被集成在了llvm
中,所以需要先安装llvm
,点击此处下载
下载之后运行安装文件,将其中的bin
目录添加到环境变量path中(需重启电脑使新添加的环境变量生效)。例如我安装后的目录为C:\wsr\LLVM\bin
,图中的clang-format
就是格式化c代码需要的组件
1.1 clang-format初体验
test1.c
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[2][2] = {
{
1,2}
,
{
3,4}};
printf("Hello World!\n");
printf("Hello World!\n");
printf("Hello World!\n");
printf("Hello World!\n");
return 0;
}
打开powershell或cmd
,设置环境变量后没有重启电脑需要进入llvm的bin目录
,运行如下命令:
PS C:\Users\fy> cd C:\wsr\LLVM\bin\
PS C:\wsr\LLVM\bin> .\clang-format.exe -style=google -i C:\Users\fy\Desktop\test1.c
PS C:\wsr\LLVM\bin>
test1.c
的源代码被格式化为
#include <stdio.h>
int main(int argc, char *argv[]) {
int a[2][2] = {
{
1, 2}, {
3, 4}};
printf("Hello World!\n");
printf("Hello World!\n");
printf("Hello World!\n");
printf("Hello World!\n");
return 0;
}
clang-foramt用法 | clang-format -style=xxx -i ***.c |
---|---|
-style | 表示风格,可选项为 LLVM、Google、Chromium、Mozilla、WebKit 和 file,其中 file 指定参数文件 |
-i | 表示将格式化后的内容写入原文件 |
如:
PS C:\wsr\LLVM\bin> .\clang-format -style=Chromium -i C:\Users\fy\Desktop\test1.c
PS C:\wsr\LLVM\bin> .\clang-format -style=LLVM -i C:\Users\fy\Desktop\test1.c
PS C:\wsr\LLVM\bin> .\clang-format -style=google -i C:\Users\fy\Desktop\test1.c
PS C:\wsr\LLVM\bin> .\clang-format -style=WebKit -i C:\Users\fy\Desktop\test1.c
1.2 在vim中格式化c代码
1.2.1 为vim配置python
首先,打开vim
,在命令行模式下输入:version
,查看所使用的vim是否支持python,以及支持的python版本
从输出可以看出,我用的vim是32位的vim8.2
,此版本支持python
,且所用的python版本为python2.7及python3.6
。由于配置环境过程中用到的插件与vim使用的python版本有关,所以下面先为vim配置python。
打开python官网,下载32位的python2.7及python3.6
,我下载的为2.7.18和3.6.8
:
https://www.python.org/ftp/python/3.6.8/python-3.6.8.exe
https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi
下载好之后将两个版本的python分别安装(若已安装过其他版本python不用卸载)。这里安装时自定义安装目录,不要为其设置环境变量。
我的自定义安装目录如下所示:
C:\wsr (x86)\python\python27
C:\wsr (x86)\python\python36
编辑vim的配置文件.gvimrc
,在其中添加如下设置项(安装目录中有空格的话,在空格前添加一个\
):
set pythondll=C:\wsr\ (x86)\python\python27\python27.dll
set pythonhome=C:\wsr\ (x86)\python\python27
set pythonthreedll=C:\wsr\ (x86)\python\python36\python36.dll
set pythonthreehome=C:\wsr\ (x86)\python\python36
然后在vim命令行模式执行:source $MYGVIMRC
,使改动生效。
1.2.2 安装代码格式化插件
安装代码格式化插件vim-clang-format,打开powershell,执行命令:
PS C:\Users\fy\vimfiles\pack\my_plugins\start> git clone https://github.com/rhysd/vim-clang-format.git vim-clang-format
注:这里没有使用插件管理器安装插件
仍然以test1.c
为例
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[2][2] = {
{
1,2}
,
{
3,4}};
printf("Hello World!\n");
printf("Hello World!\n");
printf("Hello World!\n");
printf("Hello World!\n");
return 0;
}
命令行模式下,执行:ClangFormat
,则源文件就被格式化了
也可以在.gvimrc
中为vim-clang-format设置快捷键
let g:clang_format#style_options = {
\ "AccessModifierOffset" : -4,
\ "AlignConsecutiveAssignments": "true",
\ "AlignConsecutiveDeclarations": "true",
\ "AlignConsecutiveMacros": "true",
\ "AlignOperands": "true",
\ "AlignTrailingComments": "true",
\ "AllowShortFunctionsOnASingleLine" : "Empty",
\ "AllowShortIfStatementsOnASingleLine" : "true",
\ "AllowShortLoopsOnASingleLine" : "true",
\ "AlwaysBreakTemplateDeclarations" : "true",
\ "BreakBeforeBraces" : "WebKit",
\ "BreakBeforeTernaryOperators " : "true",
\ "BreakStringLiterals" : "true",
\ "ColumnLimit": 80,
\ "MaxEmptyLinesToKeep": 1,
\ "Standard" : "C++11"}
" 使用 <Leader>cf 格式化代码
autocmd FileType c,cpp,objc nnoremap <buffer><Leader>cf :<C-u>ClangFormat<CR>
autocmd FileType c,cpp,objc vnoremap <buffer><Leader>cf :ClangFormat<CR>
" Toggle auto formatting:
nmap <Leader>C :ClangFormatAutoToggle<CR>
2 代码自动补全
代码自动补全需要安装插件vim-snippets、ultisnips
PS C:\Users\fy\vimfiles\pack\my_plugins\start> git clone https://github.com/honza/vim-snippets.git vim-snippets
PS C:\Users\fy\vimfiles\pack\my_plugins\start> git clone https://github.com/SirVer/ultisnips.git ultisnips
安装完成之后,就可以在vim中使用代码自动补全了。使用vim编辑test2.c
:
输入 inc、按Tab键
输入 main、按Tab键
输入 printf、按Tab键
……
如果想自定义代码片段的话,可以在c:\users\username\vimfiles
文件夹中新建文件夹ultisnips
,并在其中新建文件c.snippets、cpp.snippets
……。c.snippets对应C语言、cpp.snippets对应C++……
其中文件夹的名字自定义,若有多个文件夹,可在.gvimrc
添加如下设置
let g:UltiSnipsSnippetDirectories=["ultisnips","ultisnips-1"]
其中自定义代码片段的格式为:
snippet trigger_word [ "description" [ options ] ]
snippet 缩写 [ “描述” [选项] ]
code
endsnippet
如C:\Users\fy\vimfiles\ultisnips\c.snippets
:
snippet if0
if ($1 == 0) {
${2}
}
endsnippet
定义上述代码片段之后,在C源文件中编辑代码时输入if0
,再按下Tab
就能添加代码了。
3 编译运行源程序
在.gvimrc
中添加如下设置:
nnoremap <F5> :call CompileAndRun()<CR>
func! CompileAndRun()
exec "w"
echo "Compiling..."
if &filetype == 'c'
exec "!gcc % -o %<"
elseif &filetype == 'cpp'
exec "!g++ % -o %<"
endif
echo "\nRunning..."
exec "!%<"
"exec "! ./%<"
endfunc
更改生效后,按下F5
就能一键编译运行C程序了
转载:https://blog.csdn.net/weixin_42250302/article/details/116594723