考虑良久我才决定发这一贴,因为这是一个费力不讨好的事,容易被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期)