Vim C/C++的一键编译

开始用Vim差不多有两个月的时间, 一开始用Makefile 编译一整个项目无压力, 但是当写到单个文件的时候, 编译就比较麻烦了, 每次都得
:w
:!gcc -o 1.exe 1.c
:!1
非常麻烦...所以我都直接用的Code::Blocks...其实比Vim快多了哈哈...

但是昨晚折腾病发作, 想好好来配置一下, 于是花了一个晚上...改了一个能看得过去的一键编译.
原来的代码出自: http://www.vimer.cn/2009/10/11.html 这个域名好羡慕...
觉得他考虑的东西太多而且不好用, 自己折腾了折腾.
所幸vim的帮助文件非常全面, 改动他并不是难事.
代码及注释如下:

 

  1 "单个文件编译 Linux 下大概有问题
 2 "
 3 "
 4 map <F9> :call Do_OneFileMake()<CR> 
 5 "判断操作系统
 6 if(has("win32") || has("win95") || has("win64") || has("win16"))
 7     let g:iswindows=1
 8 else
 9     let g:iswindows=0
10 endif
11 "函数体
12 function Do_OneFileMake()
13     "关闭之前可能存在的QucikFix窗口
14     execute "cclose"    
15     "判断文件路径和工作目录是否相同(其实我也不知道为什么要判断
16     if expand("%:p:h")!=getcwd()
17         echohl WarningMsg | echo "Fail to make! This file is not in the current dir! " | echohl None
18         return
19     endif
20     "sourcefilename 功能未知, 判断该类型是否被支持
21     let sourcefileename=expand("%:t")
22     if (sourcefileename=="" || (&filetype!="cpp" && &filetype!="c"))
23         echohl WarningMsg | echo "Fail to make! Please select the right file!" | echohl None
24         return
25     endif
26     "编译前先保存
27     exec "w" 
28     "设置make参数,
29     "Linux 和 Windows的情况不同, Linux的执行是./*.out Windows的是 *.exe Linux 下的没有经过测试o
30     "makeprg 是 make的参数, 如果 makeprg=make 就执行真正的make.exe,  寻找目录下的makefile, 如果不是make的话这个参数就相当于makefile 的内容, 但是无论如何错误信息都会被送到QuickFix窗口.(暂时的粗浅理解
31     "makeprg中空格和双引号都需要用反斜杠"\"转义
32     if &filetype=="c"
33         if g:iswindows==1
34            set makeprg=gcc\ -o\ \"%<.exe\"\ \"%\"
35         else
36            set makeprg=gcc\ -o\ \"%<\"\ \"%\"
37         endif
38     elseif &filetype=="cpp"
39         if g:iswindows==1
40             set makeprg=g++\ -o\ \"%<.exe\"\ \"%\"
41         else
42             set makeprg=g++\ -o\ \"%<\"\ \"%\"
43         endif
44     endif
45     "删除旧文件, outfilename是生成程序的完整路径
46     let outfilename=expand("%:r").".exe"
47     if filereadable(outfilename)
48         if(g:iswindows==1)
49             let outdeletedsuccess=delete(outfilename)
50         else
51             let outdeletedsuccess=delete("./".outfilename) "doesn't work
52         endif
53         "如果文件删除不了报错
54         if(outdeletedsuccess!=0)
55             set makeprg=make
56             echohl WarningMsg | echo "Fail to make! I cannot delete the ".outfilename | echohl None
57             return
58         endif
59     endif
60     "静默编译, silent 关键字用于静默执行
61     execute "silent make"
62     set makeprg=make  
63     "编译后如果文件存在,说明编译成功, 执行之
64     if filereadable(outfilename)
65         if(g:iswindows==1)
66             execute "!\"%<.exe\""
67             return 
68         else
69             execute "!\"./%<.out\""
70             return 
71         endif
72     endif
73     "不成功弹出错误信息, 即QuickFix窗口
74     execute "silent copen 6"
75 endfunction

 

 



以上.

转载于:https://www.cnblogs.com/lastavengers/p/3957013.html

linux系统ubuntu18搭建C、C++开发环境 最近想学习在linux下的C、C++开发,以便能具备跨平台能力,网上查看了些前辈高人的各种搭配经过甄选后,决定自己的搭配如下:ubuntu18的linux系统、编译器自是gcc、g++的不二选择、编辑器利用vim-plus一键安装版(Vim加上各种以搭配好的适用插件)。 系统选择:ubuntu是近年慢慢流行起来的一个linux分支系统,既然是较为流行那么出问题资料就比较好找,所以选择该系统,并未用20最新版,选择用18个人觉得稳定性会稍好些。从阿里的镜像下载安装包,地址为:http://mirrors.a 阅读详情

相关推荐

vim配置c/c++环境

这篇博客主要记录一下我自己配置vim写c/c++代码环境和MINgw的一些问题一.安装c/c++的编译器我用的是MINgw软件,其实它是集成了很多编译器在里面的(g++,gcc......),我一开始用的是mingw-get-setup.exe安装包,这个在百度下就知道怎么下载了和使用了mingw-get-setup.exe下载链接:https://sourceforge.net/projects...

戀你一哈的博客 1901

vim:vim 配置 一键编译C/C++程序

原文地址:vim 配置 一键编译C/C++程序 作者:haicg   配VIM,使其能一键编译单文件源码程序. 在.vimrc文件添加如下函数:   点击(此处)折叠或打开 nmap &lt;F4&gt; :call DoOneFileMake()&lt;CR&gt; function DoOneFileMake()     if(expand("%:p:h")!=getcwd()) ...

hunter 1605

windows下搭建c++开发环境(MinGW-64 + VIM)

windows下搭建c++开发环境(MinGW-64+VIM)前言所需文件介绍,及其下载地址MinGW-64安装过程vim安装以及配置 前言 c++开发环境的搭建有两种方式,一是安装集成开发环境(IDE),c++有许多IDE。如Code::Blocks、 Visual Studio、CodeLite… 但IDE软件大,功能多,不够灵活。这篇文章介绍第二种方法:编译器+编辑器,我认为更适合爱折腾的初...

l815453541的博客 3189

在Linux下使用Vi进阶编辑器Vim编译C/C++

Vim – 编辑器之神 历史与争端 Vim 的前身是 vi,一个简洁但是略有不足的编辑器,但是从 vi 开始,编辑器的模式区分和唯快不破的思想就已经体现的很到位了。Vim 即是 vi improved,是在 vi 原本所有的方式上进行的进一步提升,但是并不会改变 vi 的其他本质,只是增加了更多适应如今需要的一些功能。 vi 于 1976 年诞生,与 Emacs 不分先后,两者因其快捷的编辑被奉为...

ly's Blog 6078

✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub

构建一个带 GPU 支持的深度学习开发镜像;使用 PyTorch 2.5.1(CUDA 12.4)环境;发布并托管 Docker 镜像至 Docker Hub;验证 GPU 环境正常运行!🎉 这将极大提升你的项目部署效率,尤其是在多人协作或跨平台部署场景中。

用大模型重构生活:猫奴程序员的AI智能日常记录 1576

双有源桥DC-DC变换器:原理、软开关与移相控制深度解析

隔离型DC-DC变换器是电力电子系统的核心部件,通过高频变压器实现电气隔离与电压匹配,保障系统安全与灵活适配。其工作原理基于功率半导体器件的开关动作,通过调制策略控制能量传输。该技术的核心价值在于实现高效、高功率密度的电能转换,并支持双向能量流动,这对于提升系统整体能效和运行灵活性至关重要。在新能源储能、电动汽车V2G及数据中心供电等场景中,双向能量流成为刚性需求,推动了如双有源桥等先进拓扑的应用。本文聚焦于双有源桥这一实现高效双向隔离变换的“明星”方案,深入剖析其利用移相控制实现软开关的机理。通过分析谐振

weixin_34195142的博客 378

Notepad++一键编译运行C/C++

为了使C/C++代码调试更方便,通过Notepad++与MinGw联合使用,一键编译运行代码。本文记录Notepad++与MinGw配置方法。

zx032565的博客 2298

LoRa正点原子模块组网步骤

按照我上一篇的博客和视频演示,相信大家一定都可实现了lora模块点对点的通信了。那我们来进行一个比较有高难度的设计吧! 使用多个loRa模块去完成一个组网设计: 在这之前一定要配置模块信息为定点传输 AT+TMODDE要等于1奥 第一步分析通讯协议: 点对点通讯是在透明传输的条件下,地址和信道都是一样的,直接发送接受数据。 组网呢我们利用是: 定向传输就是 A、B的地址、信道不同 假如A是要想B发送信息就用函数来下面: int b[5]...

weixin_43205178的博客 4082

vscode一键配置C/C++多个C及CPP文件编译与tasks.json和launch.json原理

vscode配置环境及配置原理 搜了很多的教程,发现要么教程太老,给的配置信息里面有些参数都不能使用了,要么就是直接扔下自己的配置信息就没了,不知道咋来的,也不能拿过来直接用,让我这种小白无从下手,于是就摸索整理一下,帮助一下像我这样小白刚入手的小伙伴们。 原理 我觉得最重要的就是我们要明白各个配置文件是干嘛的,它是怎么被vscode使用的,明白这一点,那么自己就可以比较清晰参数该怎么改,应该改哪些参数,而不是拿着别人的配置文件,无从下手。配置文件基本的原理(只是原理,不是咋配置的): vscode使用的最

taynpg的博客 4万+

Word2vec核心模型精讲:CBOW与Skip-gram

Word2vec是Google提出的词向量模型,通过CBOW和Skip-gram两种神经网络架构将词汇映射到低维向量空间。CBOW通过上下文预测中心词,训练速度快但高频词表现更好;Skip-gram则相反,通过中心词预测上下文,适合处理生僻词。为解决softmax计算效率问题,Word2vec引入基于哈夫曼树的Hierarchical Softmax优化技术,将复杂度从O(V)降至O(logV)。文章详细解析了两种模型的原理差异,并演示了哈夫曼树的构造过程及其在词向量训练中的关键作用,这种结合词频的优

Trisyp的博客 529

基于MATLAB的导弹轨迹和撞击位置仿真

本文将介绍如何使用MATLAB进行导弹轨迹和撞击位置的仿真,提高导弹的精确打击能力。首先,我们需要确定导弹的初始位置和速度,以及导弹所受到的外部环境因素如重力、空气阻力等。在MATLAB中,可以通过ODE求解器来模拟导弹的运动轨迹。最后,我们通过控制器输出的控制信号来控制导弹的姿态。通过对导弹的运动轨迹和姿态进行仿真,可以更好地预测和规划导弹的运动轨迹,提高其精确打击能力。在实际作战中,为了提高导弹精确打击能力,需要对导弹的撞击位置进行预测和规划。我们可以通过控制导弹的姿态来实现撞击目标的精确命中。

CyberLynxO的博客 1982

gVim/Vim 一键编译、连接、运行 C/C++ 单文件

用于Gvim 或 Vim 配置文件的一键编译与运行函数(注:需要机器上安装了GCC才行)本代码只加入了对C/C++的编译与运行,如果要加入其语言的可以参考此代码加入即可同时,本代码加入了对Windows下用Gvim编译UTF-8编码格式的源文件时中文乱码的解决方法(也就是在编译选项中加入了 “-fexec-charset=gbk”)。将上面的代码加入到_vimrc文件里即可​1. [代码]...

weixin_30448685的博客 411

webrtc+uniapp(h5和app)实现在线聊天功能 uniapp+网页+服务端源码

uniapp端代码 服务端代码 public/index.html

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 754

Vim 一键编译、连接、运行 C/C++ 单文件(Windows 与 Linux通用)

本代码是对vim下一键保存/编译/链接/运行的配置,放在vimrc文件内即可 "------------------------------------------------------------------------------ " "---------------------------------------------------------------------------

聚沙成塔 积水成渊 6763

uniapp - 详解使用高德地图在地图上实现绘制边界/点聚合/行政区域高亮等功能,Uniapp高德地图点聚合标记及绘制点线面示例代码(全端兼容H5网页、小程序、安卓app、苹果app、nvue)

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,高德地图,uniAPP高德地图实现点聚合,地图区域描边、点标记、点信息详情弹窗,实现绘制边界区域,uniapp H5使用高德地图实现点聚合、行政区域高亮,实现高德地图的marker聚合功能,高德地图进行marker标点,点信息展示,点击标记点弹出对话框,点击聚合点后显示信息模态框,打标点,【Uniapp】高德地图的接入自定义标点与信息窗体使用,绘制行政区域边界,绘制多边形,电子围栏,高德行政区划边界,

✅ 精选推荐文章 1万+

STM32cubeMX配置FreeRTOS软件定时器

文章目录前言1.软件定时器概述一.软件定时器特性二、使用cubeMX生成软件定时器总结 前言 本文主要带大家了解什么是软件定时器,并且带大家使用cubeMX配置软件定时器。 1.软件定时器概述 一.软件定时器特性 软件定时器就是一个闹钟当时间到了就执行相对应的任务或者代码。软件定时器是基于系统滴答中断的。在FreeRTOS中我们可以设置无数个软件定时器。 指定时间:启动定时器和运行回调函数,两者的间隔被称为定时器的周期 (period)。 指定类型定时器有两种类型: 1.一次性 这类定时器启动后,它的回调函

m0_49476241的博客 6949

Vim一键编译运行

Vim 一键编译运行Vim大法好!我平时主要用vim作为IDE写python,c/c++, shell script。但是每次vim编辑完都需要输入wq保存,然后在命令行中执行,发现错误后再次进入源码中修改,如此大大浪费程序猿的时间,生命如此宝贵!以python为例,vim 环境下,在命令模式中输入下命令::!python %即可用python编译当前文件。其他语言同理熟悉IDE的童鞋一般都会使用F

南有乔木NTU的博客 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Vim的强大配置文件(一键配置)

花了很长时间整理的,感觉用起来很方便,共享一下。 我的vim配置主要有以下优点: 1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试 2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改 3.映射“Ctrl + A”为全选并复制快捷键,方便复制代

u010871058的专栏 7万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

写一个vim脚本方便在vim中编译所编辑的文件

function! My_compile_command() let l:ext = expand("%:e") if (l:ext == "cpp") exec "!g++ ".expand("%") elseif (l:ext == "c") exec "!gcc ".expand("%") endif endf

datoplay 218

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

革命性IDE方案use_vim_as_ide:将Vim打造成C/C++开发神器

use_vim_as_ide是一个专注于将Vim编辑器转变为功能完备的C/C++集成开发环境(IDE)的开源项目。通过精心配置的插件和工具链,它让开发者能够在保持Vim轻量高效特性的同时,获得媲美现代IDE的开发体验,特别适合追求极致效率的C/C++程序员。 ## 🌟 图形化IDE总览:Vim的华丽变身 传统Vim给人的印象往往是单调的命令行界面,但use_vim_as_ide彻底改变了这一

gitblog_01066的博客 1020

工具:vim一键编译执行+quickfix 打开显示错误信息

"compile c c++ file in quickfix nmap &lt;F4&gt; :call DoOneFileMake()&lt;CR&gt; function DoOneFileMake() if(expand("%:p:h")!=getcwd()) echohl WarningMsg | echo "Fail to make! This file is...

hunter 706

vim编译C/C++

"------------------------------------------------------------------------------ " "------------------------------------------------------------------------------ if(has("win32") || has("win64") || h

onestow的专栏 540

VIM 一键编译

第一种方法去VIM官网下个CVIM插件(http://www.vim.org/scripts/script.php?script_id=213)应该是这个地址,不是的话,自己去VIM官网输入CVIM关键字搜索直接解压到你的.vim文件夹中(就是专门放VIM插件的文件夹)然后命令如下(只针对C和C++文件,其他文件无效):F9 compile and linkAlt-F9 write buffer ...

weixin_30597269的博客 181

vim python配置选中一行代码并移动_vim设置一键执行python代码-阿里云开发者社区...

根据系统将下面代码复制到vim配置文件vimrc中,即可在vim中一键【F5】运行.py文件。Windows下的gvim"一键运行代码function CheckPythonSyntax()let mp = &makeprglet ef = &errorformatlet exeFile = expand("%:t")setlocal makeprg=python\ -uset e...

weixin_39564831的博客 86
上一篇: 《30天自制操作系统》读书笔记(5) GDT&IDT
下一篇: 《30天自制操作系统》读书笔记(6) 鼠标键盘
dingjin9321
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值