Editor 板


LINE

建议是写一个 Makefile,因为当你在 vim :make 的时候, vim 会根据 make 的结果,parse 程式有错的地方,存入 quicklist, 且会预设直接跳到第一个错误点,你就可以马上修正那个编译错误。 这边列出常用的、跟 make 有关的几个指令: :make 在目前路径下执行 make[1], 并且会根据 make 的结果[2]产生 quicklist。 而编辑位置会自动跳到第一个编译错误的点,方便马上修改。 敝人用 map <F7> :make<CR> 直接编译。 且用 map <F5> :make<CR>:!./a.out<CR> 编译加执行[3]:cn 跳到下一个 quicklist 的位置。 敝人用 map <C-N> :cn<CR> 就可以按住 <C-N> 快速巡览错误。 :cp 跳到前一个 quicklist 的位置。 敝人用 map <C-P> :cp<CR> 配合 <C-N> 跑来跑去 XD :make! 很类似 :make,但是不会自动跳到第一个错误点。 :cl 列出所有的编译错误,这些被列出来的是经过过滤的[2], 一般的讯息会被过滤掉,只有编译错误或是警告会被列出。 :cl! 类似 :cl,但是不会过滤编译的结果, 有的时候你的编译错误发生到好几层 #include 底下, 你希望可以看到 include 的 back-trace, 这种时候 :cl! 就很好用了。 这样在 vim 里面就是「编辑 → <F5>编译、执行 → 编辑」的快速 loop, 也不用再跳到外面了,基本上在里面就可以做完大部分的事情, vim 已经提供了编译程式的良好支援,可以让人作起事来像是用 IDE 一样, 唯一缺少的就是 debugger 整合,这部分可以使用 vimgdb/clewn[4]! 透过 vimgdb/clewn 跟 gdb 的整合,就可以在 vim 里面直接 debug 了。 [1] 其实不一定是执行 make,预设是 make,但是可以设定, 透过 :set makeprg xxx 设定你真正想要呼叫的指令, 比方说我用的 build system 是 scons,我就 :set makeprg scons 前面也有板友分享设定成使用 gcc 编译目前档案,当然也是一种用法! 但是你在 vim 里面一律都是 :make 这样去执行建置的。 [2] vim 是怎麽判定编译有没有错误的呢? 他是用一个 regex 去核对编译器的输出,如果有符合的话,就会被抓出来, 预设的格式是 gcc 的错误讯息,如果你使用别的编译器, 请使用 :set errorformat 设定你的 regex。 [3] 细心的人可能已经发现「编译→执行」这中间不一定顺利, 因为编译有可能有错误,这个时候,我就不希望 !./a.out 被执行。 所以实际上我不是这样 map,而是 :map <F5> :call BuildAndRun()<CR>。 BuildAndRun() 是我自己写的一个函数, 他会先 make,然後检查 quicklist,如果没错,就 !./a.out, 如果有错,他就停住了。 後来我觉得好像可以用 make && ./a.out 还是啥之类的作掉这件事, 但是我没试过,有人有心得的话请分享给我知道 XD 收到来信问这个函数要怎麽写,於是来补充一下... function! HasError(qflist) for i in a:qflist if i.valid == 1 return 1 endif endfor return 0 endfunction function! MakeAndRun() make if HasError( getqflist() ) cl else !a.out endif endfunction map <F5> :call MakeAndRun()<CR> [4] 官方网站 http://clewn.sourceforge.net/ 别人的 blog 教学 http://tinyurl.com/y9p3wwc -- To iterate is human, to recurse, divine. 递回只应天上有, 凡人该当用回圈.   L. Peter Deutsch --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.107.136 ※ 编辑: yoco315 来自: 203.160.254.105 (11/05 14:34)
1F:→ tingyun60426:递回跟回圈不是一样? 02/07 16:02
2F:→ benqm300:递回用的让人家看得懂的话,程式倒是蛮简洁有力的 03/25 21:05
3F:→ yoco315:补充一下有人寄信问我的问题 <C-N> 就是 Ctrl + N 的意思 07/14 17:35
4F:→ firejox:map 里有说明:D 07/14 17:44
5F:→ angleevil:其实我有猜到C就是ctrl.只是我笨笨的用n.才会去发问 07/14 17:46
6F:→ angleevil:sorry 07/14 17:46







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP