1. 程式人生 > >Source Insight與gvim合體變身最強編譯器

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的最佳開發環境

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

相關推薦

Source Insightgvim合體編譯器

考慮良久我才決定發這一貼,因為這是一個費力不討好的事,容易被VS和eamcs的粉絲們狂噴,還容易被前輩們誤認為不務正業,因為是想尋找一些和我一樣喜歡vim和SI的童鞋共同學習。       進入正題:在Source Insight中配置:;=================

完整精確匯入KernelUboot參與編譯了的程式碼到Source Insight,Understand, SlickEdit

功能描述: 寫了一個指令碼,完整精確匯入Linux Kernel u-boot編譯過的Source檔案與依賴的標頭檔案到下列程式碼編輯器/IDE中: Source Insight Scitools Understand

【轉】完整精確匯入KernelUboot參與編譯了的程式碼到Source Insight,Understand, SlickEdit

The linux kernel and u-boot contains lots of files, when we want to broswe the source code,we just want to see these compiled files, and the header file

Source Insight 4.0.008新版體驗用法和破解下載地址

最新版本source insight 4.0.008 crack keygen 最新source insight 4.0.0087,2017.10.x更新 真正source insight4使用 source insight 4

KEIL5Source Insight同一個工程在Source Insight中亂碼的解決方法

    來源不僅僅是一個原始碼檢視的好工具,同時也是程式設計的好工具。    出現註釋亂碼的解決辦法    在SI中“FILE”-->"Reload as Ecording"--->選擇與你

PC_Lint在source insight中的整合配置

pc_lint可以幫助source insight進行程式碼的靜態檢查: 1、首先,下載pc_lint 這個在百度上直接搜尋就可以了(安裝的時候按照預設目錄直接安裝在C盤就可以了,這樣方便一些,過程見http://www.docin.com/p-399952053.html

Java 實例局部

equal ole equals() 變量 equals 會有 int 賦值 內容 一、變量: 實例變量聲明在類中,不賦值,會有初始值。 例:   integers 0   floating points 0.0   booleans false   reference

Source Insight 中文註釋為亂碼解決辦法(完美解決,一鍵搞定)【轉】

ash save sys lan sim edit ext pan character 轉自:http://blog.csdn.net/bjarnecpp/article/details/70174752 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 S

SELECTSET對量賦值

har values spa 完全 borde 表達 rom 使用 結果   SQL Server 中對已經定義的變量賦值的方式用兩種,分別是 SET 和 SELECT。   對於這兩種方式的區別,SQL Server 聯機叢書中已經有詳細的說明,但很多時候我們並沒有註意

JavaSCript全局局部

sta 標準 tail 賦值 學習 tar 局部變量 clas alt 今天公司一個實習小妹子問我兩段js代碼的區別: [javascript] view plain copy <script type="text/javascript">

Source Insight基本使用和快捷鍵

上下 body jump con cat 工具欄 tro 右鍵 ati Source Insight基本使用和快捷鍵   為什麽要用Source Insight呢?貌似是因為比完整的IDE要更快一些,比較利於查看大量的代碼。   軟件的安裝很簡單,設置好

source insight 4.0.086破解

source 恢復 原版 安裝目錄 cnblogs .cn strong 開始 href ---恢復內容開始--- source insight 4.0.086 破解: 首先安裝原版的source insight 4.0.086;這裏自己百度搜索; 安裝完成後,先別打

Source Insight 自定義命令說明

mit sage folder lex following 操作 tex 啟動 %d 1.Custom Command Dialog box Command 顯示當前選中命令的名字. 下拉列表中包含了所有的自定義命令. Run 命令行,當調用自定義命令時,這個命令行就會被執

機器學習之SVM初解淺析(一):大距離

機器學習 svm 最大距離 2 / ||w|| 這段時間在看周誌華大佬的《機器學習》,在看書的過程中,有時候會搜搜其他人寫的文章,對比來講,周教授講的內容還是比較深刻的,但是前幾天看到SVM這一章的時候,感覺甚是晦澀啊,第一感覺就是比較抽象,特別是對於像本人這種I

成員局部

保存 其他 什麽 類的方法 區別 臨時 變量的作用域 方法 都是 成員變量: 在類中定義,用來描述對象將要有什麽; 可以由本類中的方法調用; 其他類的方法也可以調用; 局部變量: 在類的方法中定義,在方法中臨時保存數據; 只有它本身的方法可以調用; 成員變量與局部變

只需一個中秋,京東企業購就能“獨角獸”?

前沿 明顯 多渠道 images 布局 金融服務 市場 靈活 采購 中秋將至,除了傳統習俗吃月餅賞月的合家團圓,電商的“企業購”布局也適逢中秋送禮的采購旺季終於找到了自己的用武之地。最近幾年,企業級市場的悄然崛起引起不少人的關註,企業網購這個隱藏著巨大前景和無限可能的萬億

source insight totalcmd 中文目錄

ech %x echo utf-8 star for pps .bat tar @echo off for /F "usebackq delims=" %%a in (`echo %1^^^|iconv -f utf-8 -t gb18030`) do ( set xxxx

數組矩陣---子矩陣的大累加和問題

iic href shuf p s app au3 vcf sina user S88AI諭潛綽51http://www.docin.com/app/user/userinfo?userid=179005376 1迸0約第屠貉1MCThttp://huiyi.docin.

python局部全局

hat bsp pri 局部變量 book nbsp 原因 出錯 python name = "head first python"def what_happens_here(): print(name) 1 name = "python" 2 nam

Java中的全局局部

定義 局部變量 java 如果 共享 ati 不同的 類變量 成員 全局變量:也叫成員變量,是指在類中定義的變量;它在整個類中都有效 全局變量又可分為:類變量和實例變量 1.類變量:又叫靜態變量 用static修