Source Insight与gvim合体变身最强编译器

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

==============================================================================================
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值