工具:在VIM中添加一键编译和一键运行

使用vim编写并编译运行C++程序并添加代码补全等功能 听说使用vim写程序效率非常高,今天满怀一腔热血准备把vim整利索了,写篇笔记记录一下防止以后忘了,vim功能很多,我也只能是解决我现在的需求,以后遇到更多的需求再扩充,如果读者有什么建议和问题欢迎留言讨论 vim编写一个C++程序并保存可能出现的异常情况编译并运行cpp文件参考文献 编写一个C++程序并保存 首先在linuxlinuxlinux下安装vimvimvim,不题 我安装的ubuntuubuntuubuntu系统是中文版的,版本为Ubuntu9.3.0−17ubuntu1 20.. 阅读详情

在VIM中添加一键编译和一键运行

分类: LINUX

2010-03-30 13:09:26

 

事先声明,我使用的VIM完全是基于终端的,而不是gvim或vim-x11。因为后两者不具有平台移植性,花哨的目录和鼠标点击并非必须。

 

在vim中编程,退出来再敲命令编译是一件痛苦的事情。如果能够像VC那样一键编译和一键运行就爽了。

事实上,在vim中实现这种功能并不困难,所需要的只是在配置文件~/.vimrc中加一些过程,然后将这些过程与某些快捷键进行绑定即可。

 

第一步,写编译函数。

事实上,vim的配置脚本完全可以称得上一门语言,因此定制一些功能是完全没问题的。

 

func! CompileGcc()
    exec "w"
    let compilecmd="!gcc "
    let compileflag="-o %< "
    if search("mpi\.h") != 0
        let compilecmd = "!mpicc "
    endif
    if search("glut\.h") != 0
        let compileflag .= " -lglut -lGLU -lGL "
    endif
    if search("cv\.h") != 0
        let compileflag .= " -lcv -lhighgui -lcvaux "
    endif
    if search("omp\.h") != 0
        let compileflag .= " -fopenmp "
    endif
    if search("math\.h") != 0
        let compileflag .= " -lm "
    endif
    exec compilecmd." % ".compileflag
endfunc
func! CompileGpp()
    exec "w"
    let compilecmd="!g++ "
    let compileflag="-o %< "
    if search("mpi\.h") != 0
        let compilecmd = "!mpic++ "
    endif
    if search("glut\.h") != 0
        let compileflag .= " -lglut -lGLU -lGL "
    endif
    if search("cv\.h") != 0
        let compileflag .= " -lcv -lhighgui -lcvaux "
    endif
    if search("omp\.h") != 0
        let compileflag .= " -fopenmp "
    endif
    if search("math\.h") != 0
        let compileflag .= " -lm "
    endif
    exec compilecmd." % ".compileflag
endfunc

 

这样就定义两个函数,分别编译C和C++,其含义应该是比较明显的了。注意,这里用到的两个变量compilecmd和compileflag都是局部变量。search函数用来搜索字符串,我根据源码的头文件来判断编译所需要的库。连接两个字符串的运行符是一个句点。%为内部变量,表示文件名,而%<表示没有后缀的文件名。

 

上面的函数只是定义了C/C++语言的编译,如果需要编译其它语言,则也需要编写对应的函数。而把这些不同语言的函数组合到一起则还需要另外一个函数。

 

第二步,组合成一个函数

 

func! CompileCode()
        exec "w"
        if &filetype == "cpp"
                exec "call CompileGpp()"
        elseif &filetype == "c"
                exec "call CompileGcc()"
        endif
endfunc

 

该函数根据文件类别来选定不同的编译函数。&filetype是一个内部变量,前缀&起标识内部变量的作用。

filetype不光是cpp和c,还可以是python,java等等。

 

第三步,键绑定

map <F5> :call CompileCode()<CR>
imap <F5> <ESC>:call CompileCode()<CR>
vmap <F5> <ESC>:call CompileCode()<CR>

 

这里绑定了三次,分别对应普通模式,插入模式和可视模式。显然起到的作用是从这些模式中退出来,而表示carriage return,即敲命令时的回车。

 

现在,大功告成了,你只需要按F5键,源码就会自动保存,然后进行编译。运行可执行文件做法也是一样的。

下面贴出我的完整的解决方案,除了C/C++,还涉及到java和python。并且按F6就能执行编译生成的可执行文件。

 

func! CompileGcc()
    exec "w"
    let compilecmd="!gcc "
    let compileflag="-o %< "
    if search("mpi\.h") != 0
        let compilecmd = "!mpicc "
    endif
    if search("glut\.h") != 0
        let compileflag .= " -lglut -lGLU -lGL "
    endif
    if search("cv\.h") != 0
        let compileflag .= " -lcv -lhighgui -lcvaux "
    endif
    if search("omp\.h") != 0
        let compileflag .= " -fopenmp "
    endif
    if search("math\.h") != 0
        let compileflag .= " -lm "
    endif
    exec compilecmd." % ".compileflag
endfunc
func! CompileGpp()
    exec "w"
    let compilecmd="!g++ "
    let compileflag="-o %< "
    if search("mpi\.h") != 0
        let compilecmd = "!mpic++ "
    endif
    if search("glut\.h") != 0
        let compileflag .= " -lglut -lGLU -lGL "
    endif
    if search("cv\.h") != 0
        let compileflag .= " -lcv -lhighgui -lcvaux "
    endif
    if search("omp\.h") != 0
        let compileflag .= " -fopenmp "
    endif
    if search("math\.h") != 0
        let compileflag .= " -lm "
    endif
    exec compilecmd." % ".compileflag
endfunc

func! RunPython()
        exec "!python %"
endfunc
func! CompileJava()
    exec "!javac %"
endfunc


func! CompileCode()
        exec "w"
        if &filetype == "cpp"
                exec "call CompileGpp()"
        elseif &filetype == "c"
                exec "call CompileGcc()"
        elseif &filetype == "python"
                exec "call RunPython()"
        elseif &filetype == "java"
                exec "call CompileJava()"
        endif
endfunc

func! RunResult()
        exec "w"
        if search("mpi\.h") != 0
            exec "!mpirun -np 4 ./%<"
        elseif &filetype == "cpp"
            exec "! ./%<"
        elseif &filetype == "c"
            exec "! ./%<"
        elseif &filetype == "python"
            exec "call RunPython"
        elseif &filetype == "java"
            exec "!java %<"
        endif
endfunc

map <F5> :call CompileCode()<CR>
imap <F5> <ESC>:call CompileCode()<CR>
vmap <F5> <ESC>:call CompileCode()<CR>

map <F6> :call RunResult()<CR>

 

 

 

https://blog.youkuaiyun.com/zijin0802034/article/details/77709465
Vim 一键编译运行

Vim大法好!

我平时主要用vim作为IDE写python,c/c++, shell script。但是每次vim编辑完都需要输入wq保存,然后在命令行中执行,发现错误后再次进入源码中修改,如此大大浪费程序猿的时间,生命如此宝贵!

以python为例,vim 环境下,在命令模式中输入下命令:

:!python %

 

即可用python编译当前文件。其他语言同理

熟悉IDE的童鞋一般都会使用F5进行编译运行,Vim也可以搞定。在本地.vimrc中添加以下几行,即可:

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Quickly Run
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

map <F5> :call CompileRunGcc()<CR>

func! CompileRunGcc()
    exec "w"
    if &filetype == 'c'
        exec '!g++ % -o %<'
        exec '!time ./%<'
    elseif &filetype == 'cpp'
        exec '!g++ % -o %<'
        exec '!time ./%<'
    elseif &filetype == 'python'
        exec '!time python %'
    elseif &filetype == 'sh'
        :!time bash %
    endif                                                                              
endfunc

 

请参考使用,如果不想显示时间,time亦可去掉。
---------------------  
作者:南有乔木NTU  
来源:优快云  
原文:https://blog.youkuaiyun.com/zijin0802034/article/details/77709465  
版权声明:本文为博主原创文章,转载请附上博文链接!

linux下vim配置之一键编译运行 我们知道Linux下有很多文本编辑器,但毫无疑问,vim是所有Unix及Linux系统标准的编辑器,就如同windows系统中的记事本一样。它具有很多强大的配置比如自动换行,自动缩进等等。 通常使用linux的都是开发者,编程者。所以编译和运行是两个必不可少的工作,但是在linux下每次编辑完都必须退出vim,然后编译,最后运行。一开始没觉得有什么不好的,但是随着代码量的增多,频繁的修改,这些都 阅读详情

相关推荐

Multisim14安装失败?手把手教你彻底清理残留文件(附专用卸载工具)

本文针对Multisim14安装失败问题,提供了一套从根源解决的完整方案。文章详细分析了安装失败的三大元凶——文件残留、注册表残留和隐藏组件,并手把手指导用户使用专用卸载工具进行标准化清理,再结合手动深度清理文件系统和注册表,最终实现彻底卸载和完美重装,有效解决Multisim14安装问题。

weixin_29179311的博客 317

Linux基础——vim编辑器的使用(内含一键vim配置)

今天我们要来讲一下Linux中用到的一款功能强大的编辑器——vim。

JDSZGLLL的博客 1476

时间序列数据预测——15种时序大模型

本文综述了时间序列大模型(TSFM)的最新进展,系统介绍了11种主流模型(如TimeGPT、Lag-Llama、Moirai等)的架构特点、训练数据和创新点,并对比分析了它们在单变量/多变量预测、概率预测等功能上的差异。研究表明,基于"大规模预训练-微调/零样本"范式的TSFM在标准数据集(如M4、ETT)上展现出优于传统方法的性能,Time-MoE等模型更达到SOTA水平。但TSFM仍面临计算成本高、可解释性差等挑战,未来发展方向包括轻量级架构、多模态融合和可解释性增强。

m0_56592100的博客 4073

vim 添加一键编译和运行

文章转载至http://blog.chinaunix.net/uid-21202106-id-2406761.html 事先声明,我使用的VIM完全是基于终端的,而不是gvim或vim-x11。因为后两者不具有平台移植性,花哨的目录和鼠标点击并非必须。 在vim中编程,退出来再敲命令编译是一件痛苦的事情。如果能够像VC那样一键编译和一键运行就爽了。 事实上,在vim中实现这种功能并不困难

Love C!! 1414

SAP LSMW数据批导操作手册及跨客户端传输方法(涉及默认值配置,及多余字段如何删除)

SAP LSMW数据批导操作手册及跨客户端传输方法

我好像病了的博客 6087

静态时序分析(Static Timing Analysis, STA):简介及内容导航

静态时序分析(简称STA)是用来验证数字设计时序的技术之一,另外一种验证时序的方法是时序仿真,时序仿真可以同时验证功能和时序。“时序分析”这个术语就是用来指代“静态时序分析“或”时序仿真“这两种方法之一,简单来说,时序分析的目的就是为了解决设计中的各种时序问题。STA被称为静态的原因是其对于设计的分析是静态地执行的,并不依赖于施加在输入端口上的激励。相比之下,时序仿真则可以被视作动态地执行对设计的分析,具体过程描述如下:施加一组激励,观察在这组激励下电路行为是否符合要求,然后换一组激。

Starry__的博客 1993

vim 一键运行 Python 的几种方法

vim的配置文件:~/.vimrc 本来用的如“代码片段A”的代码,在台式机上用的挺好的,换了笔记本后,配置文件也没变,但按了F5以后,只执行了“w”,没有后面的代码运行结果。 在这篇博客,找到了另外三种方法,我选了“方法一”。写到配置里,按F5,成功的看见了结果,和博主说的一样,虽然可以输出结果,但一闪而过,直接就回到了编辑页面,完全没有参考价值。 据我花了五分钟研究之后,找到了病因所在: 众所周知,在vim运行完代码,输出结果之后,会有一个“任意键继续”,这时在键盘上找到一个叫任意的键(不是),

qq_38977565的博客 4723

GPMC开发笔记(TI开发者推荐笔记)

因为gpmc(General-Purpose Memory Controller)是TI特有的驱动,gpmc的资料比较少,本人开发gpmc驱动算是摸了很多石头过河的。所以想通过这遍文章可以给也做GPMC驱动开发的后来者有一点参考价值。文章如有瑕疵也请各位批评改正。 1.GPMC介绍 gpmc主要用于与nandflash,norflash,fpga进行通信。在这里主要介绍gpmc16位数据和地址线不复用nor模式下的通信。 注意:在这种模式下gpmc_a[0]引脚是没法使用的 1.1GPMC信号线

weixin_44316996的博客 7506

定制Neovim的一键编译运行快捷键

-

zorchp 3119

Altera下载器驱动配置:手把手教程(从零实现)

详解Altera USB-Blaster驱动安装全过程,从设备识别到软件配置一步一图,解决常见连接问题,确保开发下载器正常工作,适合初学者快速上手FPGA下载调试。

weixin_35751194的博客 989

Ubuntu的初步环境配置(VMware)

4.屏幕显示不全解决完后,在试用Ubuntu里面,直接双击“安装Ubuntu 20.04.6 LTS”。如果不存在“屏幕显示不全”的问题,直接点击安装即可,大致安装步骤与以下步骤类似。15.点击现在重启,重启成功后,会出现“清除安装介质”的问题。19.此时点开火狐,可以上网,但只可输入英文,不可以输入中文,具体解决方法见3.2。3.进入安装界面,此时可能会出现“屏幕显示不全”的问题,具体解决方法见3.1。8.选择“正常安装”、“安装Ubuntu时下载更新”,点击继续。最后,点击保留更改,设置成功。

森菌蛙诺的博客 2276

Vim一键编译运行

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

南有乔木NTU的博客 2万+

2025年春科研论文写作指导(如何写好科研论文)研究生网课期末考试

希望能帮助到大家

beijieweiyu的博客 5790

在VIM中添加一键编译和一键运行

事先声明,我使用的VIM完全是基于终端的,而不是gvim或vim-x11。因为后两者不具有平台移植性,花哨的目录和鼠标点击并非必须。 在vim中编程,退出来再敲命令编译是一件痛苦的事情。如果能够像VC那样一键编译和一键运行就爽了。 事实上,在vim中实现这种功能并不困难,所需要的只是在配置文件~/.vimrc中加一些过程,然后将这些过程与某些快捷键进行绑定即可。 第一步,写编

雨枫的专栏 3108

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

手把手教你用vim编译器运行一个C语言程序

用vim编译器运行一个C语言程序菜鸟实例 菜鸟实例 1、首先你需要在Linux操作系统环境下(可以是虚拟机),这是大前提 2、ctrl+alt+t 三个键一起按,能让你进入vim编译器,大致长这个样子 3、在光标下输入 vi hello.c(hello是文件名字,.c是后缀名,说明是C语言)回车,会进入编译器编译界面,长这个样 4、这个时候就要注意了,这里的编译器,和我们平时用的不一样...

weixin_44029199的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

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

vim 一键编译运行

Linux  vi: 1 " F5编译和运行C程序,C++程序,Python程序,shell程序,F9 gdb调试 2 " 请注意,下述代码在windows下使用会报错,需要去掉./这两个字符 3 4 " 编译和运行C 5 map :call CompileRunGcc() 6 func! CompileRunGcc() 7 exec "w" 8 exec

殊途同归 1211

在Vim中编译和运行代码:一站式指南

Vim是一款功能强大的文本编辑器,广泛用于程序员和开发人员中。虽然Vim主要用于文本编辑,但它也提供了一些方便的功能来编译和运行代码。本文将详细介绍如何在Vim中编译和运行代码,包括设置编译快捷键、使用插件以及集成构建系统。

liuxin33445566的博客 3908

vim编译运行c

一、安装vim和gcc 1、打开控制台:使用快捷键 Ctrl + Alt + T; 2、 安装vim:输入 sudo apt-get install vim; 3、 安装gcc:输入sudo apt-get install gcc 。 二、编写hello.c源代码 1、 新建文件名为hello.c的源文件:输入vim hello.c; 2、 键入i 进入insert模式(即编辑输入模式...

GodLei1995 1万+

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

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

聚沙成塔 积水成渊 6763

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

linux系统下用vim编译运行c++程序(一)

开安装好的Linux系统(ubuntu18.04) 1.安装编辑器

TBDBTUO的博客 6722

vim 一键编译运行C、C++等程序

将以下代码拷贝到自己的.vimrc文件中,保存退出即可。map &lt;F5&gt; :call CompileRunGcc()&lt;CR&gt; func! CompileRunGcc() exec "w" if &amp;filetype == 'c' exec "!g++ % -o %&lt;" exec "!time ./%&lt;" elseif &amp;f

Ying的博客 1万+

Vim修改vimrc一键编译运行后出现"请按 ENTER 或其它命令继续"

在~/.vimrc中修改配置使得用F5可以一键编译运行后,出现了"请按 ENTER 或其它命令继续"的提示,很不美观,用silent可以解决这个问题 原本配置 参考https://blog.youkuaiyun.com/qq_33505303/article/details/66473907 map &lt;F5&gt; :call CompileRunGcc()&lt;CR&gt; func!...

sherpahu的博客 3619
上一篇: 折腾:装机
下一篇: 工具:vim一键编译执行+quickfix 打开显示错误信息
nedwons
博客等级 码龄9年 311粉丝 572原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值