首页
社区
课程
招聘
[原创]Source Insight与gvim合体变身最强编译器
发表于: 2013-6-18 10:44 23474

[原创]Source Insight与gvim合体变身最强编译器

2013-6-18 10:44
23474

考虑良久我才决定发这一贴,因为这是一个费力不讨好的事,容易被VS和eamcs的粉丝们狂喷,还容易被前辈们误认为不务正业,因为是想寻找一些和我一样喜欢vim和SI的童鞋共同学习。
       进入正题:
在Source Insight中配置:
;============================================================================================================================
在Source Insight中按F1调用gvim,打开对应文件,跳转到对应的行。

1.Source Insight中,Options->Custom Commands...->Add...,New Command name 名字随意,我起的是"Gogvim"

2.Run中写入: "C:\Program Files\Vim\vim73\gvim.exe" --remote-silent +%l %f
    在当前已经打开的gvim窗口里面打开当前的文件
    并且跳转到指定行   
    %l                  ;为当前的行号
    %f                  ;为文件名
    --remote-silent     ;如果已经打开了对应文件,就不会打开第二次,而是在已经打开的文件里跳转到对应行
   
3.同一个对话框,Keys->Assign New Key...->按F1
;============================================================================================================================

gvim的配置:
;============================================================================================================================
在_vimrc添加

let mapleader = ","

map <silent> <leader>s :!start "C:\Program Files\Source Insight\Insight3.Exe" -i  +<C-R>=expand(line("."))<CR> %<CR>

nnoremap <silent>  <F4> :!start "C:\Program Files\Source Insight\Insight3.Exe" -i  +<C-R>=expand(line("."))<CR> %<CR>

inoremap <silent>  <F4> <ESC>:!start "C:\Program Files\Source Insight\Insight3.Exe" -i  +<C-R>=expand(line("."))<CR> %<CR>

将"C:\Program Files\Source Insight\Insight3.Exe"替换成你的SI全路径

1.一定要加上start,否则调用source insight时弹出讨厌的dos窗口
2.-i表示在已经打开的souce insight中打开
3.+后面的部分是指定行号

并且SI也不会多开,如果已经打开源文件则跳转

这样插入模式和无模式都可以用F4键切换到SI了,我之所以没定义成F1是因为我将F1映射成了ESC键,因为vim的ESC键使用频率太高了,
心疼键盘啊,我将F1和<CTRL-ENTER>全部映射成了ESC键,
;============================================================================================================================
这样就可以再vim编辑过程中,随时按F4或者在nor模式下按",s"启动Source Insight并直接跳转到当前页当前行,然后一个CTRL-F4我就可以看SI最赞的全局调用结构图,然后找到我需要的源文件位置,一个F1就切换回vim

当然了,用啥快捷键,每个人都可以任意DIY,即使是在庞大的VS中看全局调用结构图,也需要按几个键忙活一会吧?而且VS只支持查看函数的调用结构,变量,结构,宏啊的,通通不支持,至少到VS2010是如此,因为2012我没用过嘛,唯一美中不足的就是,任务栏中有两个项一个是si,一个是vim。

vim是一个伟大的编辑器,她的所有功能都实现了自动化,都有接口让你任意组合,而且完全开源

VIM和VS的比较,比如把VIM和VS都比喻成战斗机

哪VS就属于有授权进口战机,他的各种功能都给你调配好了,你能很快上手,发挥它的威力,但是它的威力是固定的
而且它一旦出现bug,几乎就是能让人找不着北的,因为它不开源啊,你只能使用它给你组合好了的功能,你想改发动机你得看人家愿不愿意给你图纸

    vim属于那种所有图纸都给你,但是只给你实现最基本功能的战斗机,它能发挥多大的威力看你用多大的心思了,我在学习vim时候经历了各种挫折,
尝试了各种插件,后来痛定思痛,我认认真真研究了所有vim的帮助文件,当我可以用VIM取代VS的时候,我用了半个月的时间,但是现在我觉得这个时间是
超值的,因为vim带来的高效和舒适将为你服务一辈子,vim可以高效的编辑任何语言的代码,而且无论是windows还是linux它都可以工作,
   
    总之vim的能力是无限的,而且它能实现的功能也是无限的,只要你愿意学习vim,你可以在nomarl模式下,实现任意多功能,因为它的命令映射是字符串,
快捷键毕竟是有限的,但是字符串是无限的,比如我用  
",e" 调用并编辑_vimrc文件这是gvim全局配置文件,
用"gb" 打开当前活动文件所在目录

    虽然初期的学习是艰难而漫长的,但是却绝对是超值的,因为你一旦学会了,这一辈子,你还需要用同样的时间学习第二次吗?

    直到现在我依然有一个很重要的问题没解决,就是函数参数提示的问题,但是我相信只要我坚持,我一定能解决vim使用的一切问题,使用Vim完成
一切代码的编辑,是我的目标,也是一个Vimer的信仰,因为vim真的熟练了以后,她就不只是一个编辑器了,她是你的第三,第四只手,vim独有的插入模式
和无模式,可以让你的源文件定位达到一种武学的神乎其神的境界那句话叫"心之所欲,身之即到",
    在vim编辑器中就是"心之所欲,光标即到",精确到什么程度呢?指定源文件->指定行->指定列上的字符,哈哈,这只不过是vim的魅力之一罢啦!
    让其他编辑器中用鼠标各种双击,单击,还有上下左右键按住等N久才能继续编辑的人,羡慕我们吧,^-^!为啥?因为不是所有的源文件都能在一个屏幕下
全部显示的下,如果是上千,上万行,你光拖动滑块要多久?你可以用书签和折叠,但是有几个编辑器,像SI那样实现了无限全局命名标签的?
    虽然大多数编辑器的标签可以命名,但是有几个像SI那样可以用搜索标签名定位源码的,在VIM里这些全可以不用,因为VIM源代码定位是最强大的,没有之一!并且无论
是折叠还是书签都会增加额外的负担,就是这样.
     

      映射命令 gb的代码:

map gb <ESC>:call OpenFileLocation()<CR>  

function OpenFileLocation()  
    if ( expand("%") != "" )  
        execute "!start explorer /select, %"   
    else     
        execute "!start explorer /select, %: p : h"  
    endif  
endfunction  

修改全局配置文件即刻生效的_vimrc的代码:  (_vimrc文件中 "后的字符串被当做注释)

"        查看_vimrc文件
"        :e $VIM/_vimrc
"        在vimrc中,双引号开头的行,将被当作注释忽略
"        设置mapleader变量,当mapleader为未设置或为空时,使用缺省的“\”来作为mapleader
let mapleader = ","
"        定义了一个映射,这个映射把“<leader>s”,映射为命令“:source $VIM/_vimrc<cr>”
"        在映射生效时,VIM会把<Leader>替换成mapleader变量的值
"        “<leader>s”,使用时变成“,s”
"        输入这一快捷方式时,重新加载_vimrc文件
map <silent> <leader>l :source $VIM/_vimrc<cr>
"        定义了“<leader>e”快捷键,当输入“,e”时,会打开~/_vimrc进行编辑
map <silent> <leader>e :e $VIM/_vimrc<cr>
"        定义了一个自动命令,每次写入_vimrc后,都会执行这个自动命令,source一次~/_vimrc文件
"        bufwritepost 这个 bufwritepost 应该是写入时执行的意思
        autocmd!  bufwritepost _vimrc source  $VIM/_vimrc

有了这些配置,就可以再修改配置文件的时候,保存后就生效,不需要重新启动gvim,如果用批处理打开会话启动的gvim话需要更新下当前会话,
比如用以下批处理启动gvim:
gvim -S c:\session.vim
就需要把session.vim删除重新保存下,我曾经被这问题困扰了2天,还在看雪发帖问了,最终还是自己各种尝试以后搞定了,会话就相当于VS的工作空间^_^

     在用一个我心目中的比喻吧
     VS是自行车,很快就能学会,但是它的能力是有限的,你想它更强只能等它出新版本的自行车
    和VS比gVim就是兰博基尼,你可以不服气,但是事实就是如此,你学习它需要很长的周期,但是当你真正驾驭它的时候,可以甩下自行车几百条街,如果你能坚持一辈子使用VIM可以甩下自行车半个地球,因为再加速,距离就近了,因为地球是圆的嘛,哈哈哈       
     虽然初期的学习是艰难而漫长的,但是却绝对是超值的,因为你一旦学会了,这一辈子,你还需要用同样的时间学习第二次吗?

    最后说下,这种配置在asm开发中没有那个IDE可以匹敌,无论是Radasm,还是别的什么,因为ASM代码写多了行数超级大,可以把vim的优势体现到极致,而且你想查看查看代码结构,除了SI没有那个IDE对ASM支持的这么好,SI+VIM是asm的最佳开发环境

==============================================================================================

和荒野无灯商量了下,建了个圈子:Vim和SI爱好者
http://bbs.pediy.com/group.php?groupid=165
不建QQ群或者YY群,因为开着聊天软件,特别容易分心,而技术讨论群望望变成聊天扯淡群 !!!
这样可以把大家有关的资料和研究成果集中,不至于被冲散啦,没有权限限制,任何人可随时加入,随时浏览,任何人都可以发表新话题讨论,
任意人都可以加入,欢迎大家加入VIM和SI阵营,
共同学习共同提高,因为这两款编辑器真的很优秀
哦,错了,现在她们对咱们来说,相当于准一款编辑器啦


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 5
支持
分享
最新回复 (27)
雪    币: 1042
活跃值: (495)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
纯支持楼主,MARK
2013-6-18 10:48
0
雪    币: 406
活跃值: (164)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
3
支持一个。楼主是有心人。希望可以一起交流下vim.
ps: qq 加不上
2013-6-18 11:04
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
对不起同鞋了,因为以前把所有群都退了,想安心闭关,所有关了好友消息,已修改,请再加下,或者短消息我你的QQ号,

虽然哪时候群退了,屏蔽了添加好友,但是已经加了的好友还是经常交流的
2013-6-18 11:14
0
雪    币: 219
活跃值: (773)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
5
mark
2013-6-18 13:06
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
添加几个截图演示下会更好些
2013-6-18 16:25
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
欢迎大家把vim和SI使用过程中缺陷和bug都写出来,大家一起解决和优化,人多力量大嘛,

圈子欢迎你们,也欢迎所有有兴趣的坛友
2013-6-18 18:08
0
雪    币: 424
活跃值: (1829)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
一直不知道Source Insight     Add tree时怎么排除指定的文件夹和文件,求指点
2013-6-18 20:00
0
雪    币: 143
活跃值: (263)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
9
很好,很强大,偶也用vim,可惜用的很菜。
2013-6-18 20:06
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
http://bbs.pediy.com/group.php?groupid=165

咱们把所有问题都写在这里,方便坛友们以后查阅,再有发在这里会被顶没地,SI不排除一些文件的话,

它的错误分析会吧makefile,批处理也当成源文件分析了,确实很讨厌,可以再工程属性配置里,设置排除的文件扩展名,

还可以增加文件扩展名,这也是SI可以支持ASM的重要原因



http://bbs.pediy.com/group.php?groupid=165

一起学习吧,vim 7.4就要出来啦,大家一起期待吧,学习VIM帮助文件,学习VIM命令,学习自己写脚本完成自己想要的功能

圈子欢迎你们,期待你们加入,一起进步
2013-6-18 20:16
0
雪    币: 328
活跃值: (154)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
11
对头,关了各种聊天,各种游戏,才能进入仙人模式……
2013-6-18 21:09
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
asm就是最好玩的游戏
2013-6-18 22:05
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
仁兄,你头像亮啦
2013-6-18 22:15
0
雪    币: 219
活跃值: (773)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
14
上传云盘 给大伙分享吧~~~~  这么多的资料
2013-6-18 22:17
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
这只是冰山一角,只是asm部分
2013-6-18 22:19
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
叼就一个字,我只说一次。好,回头试用下。
2013-6-18 23:56
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
mark  很强啊
2013-6-19 00:37
0
雪    币: 437
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
留着以后学习
2013-6-19 09:45
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
19
这个好,之前用模拟si的插件都不好用。
2013-6-19 22:27
0
雪    币: 208
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
/SI不支持UTF-8编码的硬伤怎么解决?
2013-6-20 09:14
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
21
对应楼主的精神,我只能说:I already gave my best, and I have no regrets at all.
2013-6-20 10:06
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
22
基本无解,至少我是没找到啥好办法,我是绕过这BUG,用VIM编辑,保存以后SI一切正常,我基本不用SI编辑,只是用她浏览查看,合体的目的就是取长补短,没必要和BUG死磕

PS:即使没这BUG,我也不用SI编辑,因为编辑真不是SI的强项
2013-6-20 10:18
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
23
为什么改头像。。。。。。。。。。。。。。。。。。。。。。。
2013-6-21 09:48
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
24
1.头像已经有三个人用啦
2.这是我女神
3.她阳光的笑就是我现在的心情
2013-6-21 11:54
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
楼主威武!!!感谢!!!
2013-6-28 18:30
0
游客
登录 | 注册 方可回帖
返回
//