windows下在vim中搭建c语言开发环境的详细过程

 更新时间:2021年05月11日 09:34:05   作者:其铄  
这篇文章主要介绍了windows下在vim中搭建c语言开发环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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-format -style=xxx -i ***.c

  1. -style 表示风格,可选项为 LLVM、Google、Chromium、Mozilla、WebKit 和 file,其中 file 指定参数文件。
  2. -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 $MYVIMRC,使改动生效。

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程序了

到此这篇关于windows下在vim中搭建c语言开发环境的文章就介绍到这了,更多相关vim中搭建c语言开发环境内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现LeetCode(33.在旋转有序数组中搜索)

    C++实现LeetCode(33.在旋转有序数组中搜索)

    这篇文章主要介绍了C++实现LeetCode(33.在旋转有序数组中搜索),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++Node类Cartographer开始轨迹的处理深度详解

    C++Node类Cartographer开始轨迹的处理深度详解

    这篇文章主要介绍了C++Node类Cartographer开始轨迹的处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • C++线程安全的单例模式讲解

    C++线程安全的单例模式讲解

    今天小编就为大家分享一篇关于C++线程安全的单例模式讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 详解C++11中绑定器bind的原理与使用

    详解C++11中绑定器bind的原理与使用

    C++11中引入的function机制,其中绑定器主要有三种:bind1st、bind2nd、bind(C++11)。本文就来和大家聊聊这些绑定器的底层实现原理与使用场景,需要的可以参考一下
    2022-12-12
  • C语言之关于二维数组在函数中的调用问题

    C语言之关于二维数组在函数中的调用问题

    这篇文章主要介绍了C语言之关于二维数组在函数中的调用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • C语言进阶:指针的进阶(1)

    C语言进阶:指针的进阶(1)

    这篇文章主要介绍了C语言指针详解及用法示例,介绍了其相关概念,然后分享了几种用法,具有一定参考价值。需要的朋友可以了解下
    2021-09-09
  • OpenCV图像轮廓提取的实现

    OpenCV图像轮廓提取的实现

    本文主要介绍了OpenCV图像轮廓提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 教你用Matlab制作黄金矿工小游戏

    教你用Matlab制作黄金矿工小游戏

    黄金矿工作为经典的单机小游戏,一直深受大家的喜爱。本文将用Matlab制作这一款经典的游戏,文中的实现步骤讲解详细,感兴趣的可以了解一下
    2022-03-03
  • 详解C语言中sizeof如何在自定义函数中正常工作

    详解C语言中sizeof如何在自定义函数中正常工作

    在main函数中,sizeof是可以正常工作的,但是在自定义函数中就不可以了。所以本文将为大家详细讲解一下如何解决这一问题,感兴趣的可以了解一下
    2022-05-05
  • GCC 编译c程序的方法及过程解析

    GCC 编译c程序的方法及过程解析

    目前 Linux 下最常用的 C 语言编译器是 GCC ( GNU Compiler Collection ),它是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C 、 C++ 和 Object C 等语言编写的程序
    2014-01-01

最新评论