不准备考研了,所以决定学一下单片机什么的,不过今天终于受不了kei那差的要死的编辑器了,在网上发现了一个相当漂亮还能自动补全的软件sublime_text,功能也很强大,不过要想实现在这个软件中编译51程序好像还得学习一下它的插件制作教程,需要用到我感兴趣的python,不过资料太少,最终还是决定用vim,搞了一晚上终于把基本功能搞定了。
使用的vim版本:703
使用的Keil版本:Keil4
目前支持sbit,sfr等51 c特有关键字与uint,uchar的高亮,只可以编译单个的51c文件
以下 “~” 代表Vim所在目录
1,将keil\c51\bin加入到系统路径中,确保在命令行中可以使用c51.exe bl51.exe oh51.exe
2,打开~\vim73\filetype.vim 在大概200行左右插入:
au BufNewFile,BufRead *.c51 setf c51
3,在~\vim73\syntax目录下新建c51.vim,拷贝c.vim中的内容,在172行加入:
syn keyword cType        sfr sfr16 bit sbit 
    syn keyword cType        uchar uint
4,在~\vim73\ftplugin目录下新建c51.vim:
" Vim filetype plugin file
" Language: 51c
" Maintainer: w-gh <wgh1992@gmail.com>
" Last Change: 2013 Mar 21
"Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
" Using line continuation here.
let s:cpo_save = &cpo
setlocal softtabstop=4
"定义当前脚本有效的变量
let s:lastShellReturn_C = 0        "最近一次编译的返回值
let s:lastShellReturn_L = 0        "最近一次链接的返回值
let s:ShowWarning = 1
function Compiple()
exe ":ccl"                  
"关闭快速修改窗口
exe "update"               
"文件如果有修改就进行保存
let s:LastSheelReturn_C = 0
let Sou = expand("%:p")        "文档的完整路径
let Obj = expand("%:p:r").s:Obj_Extension    "obj文件的路径
let v:statusmsg = ''            "vim预定义变量
"let Mp = &makeprg
if !filereadable(Obj) || ((filereadable(Obj) && getftime(Obj) < getftime(Sou)))
redraw!                    "更新屏幕
setlocal makeprg=c51\ %
"10sleep
echohl WarningMsg | echo " compiling...."
silent make
redraw!
if v:shell_error != 0
let s:LastSheelReturn_C = v:shell_error
endif
if s:LastSheelReturn_C != 0
exe ":bo cope"
echohl WarningMsg | echo " compilation failed"
else
if s:ShowWarning
exe ":bo cw"
endif
echohl WarningMsg | echo " compilation successful"
endif
else
"    echohl WarningMsg | echo "".Obj_Name."is up to date"
endif
"exe ":setlocal makeprg=Mp
endfunc
function Link()
if s:LastSheelReturn_C != 0
return
endif
let s:LastSheelReturn_L = 0
"let Mp = &makeprg
let v:statusmsg = ''
setlocal makeprg=bl51\ %<.obj\ to\ %<.abs
echohl WarningMsg | echo " Creating Abs file...."
silent make
redraw!
if v:shell_error != 0
let s:LastSheelReturn_L = v:shell_error
exe ":bo cope"
echohl WarningMsg | echo "Creating Abs file failed"
else
if s:ShowWarning
exe ":bo cw"
endif
echohl WarningMsg | echo " Creating Abs file successful"
endif
"setlocal makeprg=Mp
endfunction
function CreatHex()
if s:LastSheelReturn_C != 0 || s:LastSheelReturn_L != 0
return
endif
"let Mp = &makeprg
let v:statusmsg = ''
setlocal makeprg=oh51\ %<.abs
echohl WarningMsg | echo " Creating Hex file...."
silent make
redraw!
if v:shell_error != 0
exe ":bo cope"
echohl WarningMsg | echo "Creating Hex file failed"
else
if s:ShowWarning
exe ":bo cw"
endif
echohl WarningMsg | echo " Creating Hex file successful"
endif
"setlocal makeprg=Mp
endfunction
function Run()
call Compiple()
call Link()
call CreatHex()
endfunction
map <F9> :call Run()<CR>
let &cpo = s:cpo_save
unlet s:cpo_save

4,现在创建一个以.c51为后缀的文件,编辑完成后按F9键进行编译连接,并生成hex文件。
参考资料:
1,Vim.User.Manual
2,gVim/Vim 一键编译、连接、运行 C/C++ 单文件(Windows 与 Linux通用)
来自为知笔记(Wiz)Time=2013-03-21 01:02:09

转载于:https://www.cnblogs.com/WooHxxd/archive/2013/03/21/2972465.html

使用vim编辑编译c51程序相关推荐

  1. 根据c51程序改写汇编语言,Keil C51编译及连接技术

    主要介绍Keil C51的预处理方法如宏定义.常用的预处理指令及文件包含指令,C51编译库的选择及代码优化原理,C51与汇编混合编程的方法与实现以及超过64KB空间的地址分页方法的C51实现. 教学目 ...

  2. vim编译linux程序,Linux——vim程序编程器

    文书编辑器:emacs.pico.nano.joe.vim.vi vi 三种模式: 一般指令模式: 以vi打开一个文件就是直接进入一般指令模式,删除,复制,粘贴 编辑模式: [i.I.o.O.a.A. ...

  3. ubuntu中vim编辑模式退格键无法删除,方向键乱入ABCD解决方法

    最近把双系统删除后,使用虚拟机安装的Ubuntu18.04进行本地程序的编译(菜狗学习Linux下的编译调试过程) 就在照常使用vi test.cpp的时候,意外出现了 在输入错误后,使用Backsp ...

  4. 从头开始学51单片机之4:C51程序设计基础

    一.单片机的C语言概述 C51语言或C51:基于51系列单片机的C语言或C语言编译器 Keil C51:集程序编辑.编译.连接.目标文件格式转换.调试.模拟仿真等功能于一体 C51程序开发流程:与汇编 ...

  5. vim编辑修改二进制文件以及对于二进制文件中幻数测试

    vim编辑修改二进制文件以及对于二进制文件中幻数测试 这篇博客将讲述我在学习反汇编时遇到的关于编辑二进制文件的问题. 编辑环境:Ubuntu + vim 我测试的文件是一个可执行文件,也就是通过c程序 ...

  6. VS+VAX的提示功能快速编写C51程序

    虽然有智能提示的软件有很多,比如Source Insight.Ultra Edit,但我都不太喜欢.周立功的TKStudio也用过,感觉还行,但还是不太满意. 由于学C#,我的电脑上安装了Visual ...

  7. G++ 4.4.7 无法编译模板程序,Vs可以,和解?智者尾部留言,本人第一次使用vs pro,通常并且习惯在linux下写些小东西,虽然程序简单;...

    G++ 4.4.7 无法编译模板程序,Vs可以,和解?智者尾部留言,本人第一次使用vs pro,通常并且习惯在linux下写些小东西,虽然程序简单; vs 模板编译运行Ok \ linux g++ 4 ...

  8. keil流水灯c语言程序两个一起亮,51单片机学习之陆 —— 1.2 第一个c51程序(点亮流水灯)...

    原标题:51单片机学习之陆 -- 1.2 第一个c51程序(点亮流水灯) 由于学校的板子跟我买的板子有些差异,为了大家的阅读,以后的所有程序编写烧录都以老师发的板子为主. 1 事先准备 a 驱动安装, ...

  9. linux vim编辑文本是 m,Linux编辑器之VIM

    VIM是Linux功能最为强大的编辑器,它是由Unix下传统的文本编辑器VI发展而来的,VI M- Vi IMproved,VI的增强版,有彩色和高亮等特性,VIM和VI的区别可参看vi_diff.t ...

  10. deepin终端编译c程序_大神支招 如何在Linux下运行C语言程序

    刚入门学习C语言程序的小伙伴比较常遇到的其中一个问题是:如何在Linux下运行C语言程序.今天针对这个热门问题,小编为大家准备了详细的教程! 小编先给大家普及一些关于C语言程序的基本常识:首先大家要清 ...

最新文章

  1. wps保存的csv文件是什么编码的_Python文件读写详解.md
  2. android handler作用,3.2.4 Handler的作用
  3. java 将一张图片切割成n个小图片,任意切割一张图片成新图片
  4. 机器学习从理论到工程的第二步-开发环境与工具篇
  5. python输入三行数据_3行Python代码就能获取海量数据?
  6. struts2学习笔记(一) MVC模式
  7. POJ-1191 棋盘分割 动态规划
  8. 一对多关联关系映射和设置级联属性
  9. [Hdu3555] Bomb(数位DP)
  10. XSD文件详解(以Maven为例)
  11. 全网最全Java微服务面试题总结(SpringCloud+Spring Boot)
  12. iOS6正式版不完美越狱教程(附安装讯飞输入法)
  13. PPC飞信问题...WM6.5版无法安装以及连接
  14. SpringAop_2通知(新手)和无法找到元素 'aop:aspectj-autoproxy' 的声明
  15. JSON数据结构(A、快速入门篇)(Yanlz+Data+JsonArray+JsonObject+JsonValue+JsonMapper.ToJson+JsonMapper.ToObject+)
  16. 阿里云安全送您六道平安符,恭贺新春! 1
  17. 计算机图形学应用基础考试,计算机图形学基础期末考试试题.docx
  18. 机器学习-数据科学库:matplotlib绘图
  19. 小小滑块可笑可笑-安卓滑块验证码通杀方案研究(1)
  20. 双向链表 - DoubleLinkedList

热门文章

  1. mysql安装手册(2)
  2. SpringBoot MongoDB批量插入数据
  3. 我把SpringBoot的banner换成了美女,老板说工作不饱和,建议安排加班...
  4. 没学好 Netty ,要凉?
  5. 写代码千万别用User这个单词!
  6. 阿里妈妈大规模在线分层实验实践
  7. 脱口秀在尝试处理一件难事
  8. Pwn-10月25-Hitcon(三)
  9. MoveIt简单编程
  10. android launcher3 home页简易分析