(轉)Source Insight 經典教程

Source Insight實質上是一個支持多種開發語言(java,c ,c 等等)的編輯器,只不過因爲其查找、定位、彩色顯示等功能的強大,常被咱們當成源代碼閱讀工具使用。java

做爲一個開放源代碼的操做系統,Linux附帶的源代碼庫使得廣大愛好者有了一個普遍學習、深刻鑽研的機會,特別是Linux內核的組織極爲複雜,同時,又不能像windows平臺的程序同樣,可使用集成開發環境經過察看變量和函數,甚至設置斷點、單步運行、調試等手段來弄清楚整個程序的組織結構,使得Linux內核源代碼的閱讀變得尤其困難。linux

固然Linux下的vim和emacs編輯程序並非沒有提供變量、函數搜索,彩色顯示程序語句等功能。它們的功能是很是強大的。好比,vim和emacs就各自內嵌了一個標記程序,分別叫作ctag和etag,經過配置這兩個程序,也能夠實現功能強大的函數變量搜索功能,可是因爲其配置複雜,linux附帶的有關資料也不是很詳細,並且,即便創建好標記庫,要實現代碼彩色顯示功能,仍然須要進一步的配置(在另外一片文章,我將會講述如何配置這些功能),同時,對於大多數愛好者來講,可能還不能熟練使用vim和emacs那些功能比較強大的命令和快捷鍵。c++

爲了方便的學習Linux源程序,咱們不妨回到咱們熟悉的window環境下,也算是「師以長夷以制夷」吧。可是在Window平臺上,使用一些常見的集成開發環境,效果也不是很理想,好比難以將全部的文件加進去,查找速度緩慢,對於非Windows平臺的函數不能彩色顯示。因而筆者經過在互聯網上搜索,終於找到了一個強大的源代碼編輯器,它的卓越性能使得學習Linux內核源代碼的難度大大下降,這即是Source Insight3.0,它是一個Windows平臺下的共享軟件,能夠從 http://www.sourceinsight.com/上邊下載30天試用版本。因爲Source Insight是一個Windows平臺的應用軟件,因此首先要經過相應手段把Linux系統上的程序源代碼弄到Windows平臺下,這一點能夠經過在linux平臺上將/usr/src目錄下的文件拷貝到Windows平臺的分區上,或者從網上光盤直接拷貝文件到Windows平臺的分區來實現。程序員

下面主要講解如何使用Source Insight,考慮到閱讀源程序的愛好者都有至關的軟件使用水平,本文對於一些瑣碎、人所共知的細節略過不提,僅介紹一些主要內容,以便你們可以很快熟練使用本軟件,減小摸索的過程。數據庫

安裝Source Insight並啓動程序,能夠進入圖1界面。在工具條上有幾個值得注意的地方,如圖所示,圖中內凹左邊的是工程按鈕,用於顯示工程窗口的狀況;右邊的那個按鈕按下去將會顯示一個窗口,裏邊提供光標所在的函數體內對其餘函數的調用圖,經過點擊該窗體裏那些函數就能夠進入該函數所在的地方。vim


圖1 Source Insight界面圖
windows

因爲Source Insight實質上是一個支持多種開發語言(java,c ,c++等等)的編輯器,只不過因爲其查找、定位、彩色顯示等功能的強大,而被咱們當成源代碼閱讀工具使用。因此,爲了有效的閱讀源程序,首先必須選擇功能菜單上的 「Project」選項的子菜單「New Project」新建一個項目,項目名稱能夠自由選定,固然也能夠選擇刪除(Remove)一個項目。當刪除一個項目的時候,並不刪除原有的源代碼文件,只是將該軟件生成的那些工程輔助文件刪除。設定以後,將會彈出一個對話框如圖2,接受默認選擇,若是,硬盤空間足夠,能夠將第一個複選框選上,該選項將會須要與源代碼大體同等的空間來創建一個本地數據庫以加快查找的速度。
圖2 工程設置
編輯器

點擊「OK」按鈕,接受選擇後,將會有一個新的對話框彈出,在這個對話框裏,能夠選擇將要閱讀的文件加入工程,一種方式是經過在File Name中輸入要閱讀源代碼文件的名稱,點擊「Add」按鈕將其加入,也能夠經過其中「Add All」和「Add Tree」兩個按鈕能夠將選中目錄的全部文件加入到工程中,其中「Add All」選項會提示加入頂層文件和遞歸加入全部文件兩種方式,而「Add Tree」至關於「Add All」選項的遞歸加入全部文件,能夠根據須要使用,就我來講,更喜歡「Add Tree」一些。因爲該程序採用了部分打開文件的方式,沒有用到的文件不會打開,因此,加入數千個文件也不用擔憂加入的文件超出程序的所能容忍的最大值,我就是採用「Add Tree」的方式將Linux2.4內核的四千五百九十一個文件加入的。svn


圖3 添加文件
函數

加入文件後,點擊一個文件,能夠出現使用界面,如圖4所示,其中,右邊的那個窗口(Linux Project,即工程窗口)缺省按照字母順序列出當前工程中全部的文件。


圖4 工做窗口

點擊一個文件就能夠打開該文件,顯示如圖5所示,進入到右邊的那個窗口分別能夠以文件列表的方式,列出全部的文件,每一個窗體下邊有一排按鈕,左邊的窗口(21142.c)從左至右分別爲:按字母順序排列全部標記、按照文件中行數順序排列標記、按照類型排列標記、瀏覽本地文件標記、標記窗口屬性。右邊的窗口(Linux Project)從左至右分別爲:按字母順序文件列表、顯示文件夾、按照文件類型歸類文件、所有文件的全部標記列表、按照標記類型歸類標記、跳轉到定義處、顯示標記信息、瀏覽工程標記、查找函數調用、工程屬性,其中所有文件的全部標記列表選項可能要一段時間抽取標記,同步到數據庫去,若是開始選擇了創建標記數據庫,將會在從此節省同步時間,最有用的莫過於瀏覽標記信息和查找函數調用,前者能夠經過「Jump」按鈕在不一樣的地方查找一樣的標誌,還能夠經過「Reference」按鈕結合後者進行全局的標記查找。


Reference功能是Source Insight的特點之一,它能夠在速度極快的在整個工程中找到全部的標記,而且在該行程序的前邊加上紅色箭頭的小按鈕連接上。圖6是一個Reference搜索後的結果,它能夠有兩種模式,一種集中顯示結果,圖6顯示的就是這種模式,在這種模式下,能夠經過前邊的紅色箭頭小按鈕進入另一種模式,該標記的具體的所在處,也能夠經過標記的具體所在處點擊紅色箭頭小按鈕進入警種模式,還能夠經過工具條上的兩個紅色小箭頭直接在第二種模式下先後移動,察看相應信息。它的這個強大的功能使得閱讀Linux源程序有如神助。可是要注意的是,當進行了第二次「Reference」時,它會提示你將結果集附加在第一個結果集的後邊仍是取代第一個結果集。若是選擇前者,不能對結果集根據先後兩次搜索結果進行分類,而後在其子類裏進行移動,只能在整個結果集裏移動;若是,選擇後者,結果集將會被替換爲第二次搜索的結果,略微有些不方便。


圖6 Reference的搜索結果

Source Insight設置


1、背景色選擇
要改變背景色Options->preference->windows background->color設置背景色

二、解決字符等寬對齊問題。
SIS默認字體是VERDANA,很漂亮。這網頁上應該也是用的VERDANA字體。但因爲美觀的緣故,VERDANA字體是不等寬的。好比下面兩行
llllllllll
MMMMMMMMMM
一樣10個字符,長度差多了.用VERDANA來看程序,有些本應該對齊的就歪了。解放方法是使用等寬的字體,但確定比較醜。比較推薦的是用Courier New。
三、解決TAB鍵縮進問題
Options-> Document Options裏面的右下角Editing Options欄裏,把Expand tabs勾起來,而後肯定。OK,如今TAB鍵的縮進和四個空格的縮進在SIS裏面看起來就對齊咯

四、SI中的自動對齊設置:
在C程序裏, 若是遇到行末沒有分號的語句,如IF, WHILE, SWITCH等, 寫到該行末按回車,則新行自動相對上一行縮進兩列。
Option->Document option下的Auto Indient中Auto Indient Type有三種類型 None,Simple,Smart。我的推薦選用Simple類型。
五、向項目中添加文件時,只添加特定類型的文件(文件類型過濾器)
編輯彙編代碼時,在SIS裏創建PROJECT並ADD TREE的時候,根據默認設置並不會把該TREE裏面全部彙編文件都包含進來
只加了.inc和.asm後綴的,.s後綴的沒有。並且用SIS打開.s的文件,一片黑白沒有色彩,感受回到DOS的EDIT時代了……
解決方法是在Options->Document Options裏面,點左上的Document Type下拉菜單,選擇x86 Asm Source File,
而後在右邊的File filter裏*.asm;*.inc;的後面加上*.s;接着CLOSE就能夠了。
上面問題解決了,但注意加入*.s後還須要從新ADD TREE一遍才能把這些彙編加到PROJECT裏面。
六、添加文件類型
用戶能夠定義本身的類型,Options->Document Options->add type,定義文件類型名以及文件名後綴。
勾選include when adding to projects在添加目錄下文件到工程是該類文件就會添加進SI的工程。
若是須要將全部文件添加進SI的工程,能夠定義一種文件類型*.*。
七、恢復ctrl+a的全選功能
經過關鍵詞save 找到save all,更改成ctrl+shift+a,經過關鍵詞select找到select all,更改成ctrl +a


Source Insight經常使用的快捷鍵:
Ctrl+= :Jump to definition
Alt+/ :Look up reference
F3 : search backward
F4 : search forward
F5: go to Line
F7 :Look up symbols
F8 :Look up local symbols
F9 :Ident left
F10 :Ident right
Alt+, :Jump backword
Alt+. : Jump forward
Shift+F3 : search the word under cusor backward
Shift+F4 : search the word under cusor forward
F12 : incremental search
Shift+Ctrl+f: search in project
shift+F8 : hilight word

Source Insight的窗口操做:
project window Ctrl+O打開
symbol window Alt+F8打開和關閉
Contex Window 自定義鍵打開和關閉
Relation Window 自定義鍵打開 先鎖定再刷新聯繫

在Source Insight中添加自定義功能的步驟以下:
1.Source Insight中,Options->Custom Commands...->Add...,New Command name 隨便寫,個人是"Edit with Vim"
2.Run中寫入: "C:\Program Files\Vim\vim63\gvim.exe" --remote-silent +%l %f
意思是在當前已經打開的gvim窗口裏面打開當前的文件,而且跳轉到指定行
%l爲當前的行號,%f爲文件名
使用 --remote-silent 的做用是,若是已經打開了對應文件,就不會打開第二次,而是在已經打開的文件裏跳轉到對應行
3.仍是同一個對話框裏面,選擇Keys->Assign New Key...->按F12,若是你已經將F12設置給其餘命令,選擇其餘的按鍵就好了

下面是一些經常使用自定義功能:( CUSTOM COMMANDS )

打開資源管理器並選中當前文件
ShellExecute open explorer /e,/select,%f
查看log
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:log /path:%f /notempfile /closeonend
diff
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:diff /path:%f /notempfile /closeonend
取得鎖定(check out)
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:lock /path:%f /notempfile /closeonend
提交(check in)
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:commit /path:%f /notempfile /closeonend
更新(update)
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:%f /notempfile /closeonend
更新整個目錄(update all)
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:*.* /notempfile /closeonend
取消鎖定(undo check out)
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:revert /path:%f /notempfile /closeonend
在ultriEdit中編輯
"C:\Program Files\UltraEdit-32/uedit32" %f
在vim中編輯並定位到當前行
"C:\Program Files\Vim\vim63\gvim.exe" --remote-silent +%l %f

彙總其餘小技巧:

讓{ 和 } 不縮進:

Options->Document Options->Auto Indent->Indent Open Brace/Indent Close Brace

hao space: SourceInsight 小技巧
一、按住"ctrl", 再用鼠標指向某個變量,點擊一下,就能進入這個變量的定義。

二、今天把一個用sourceinsight排版整齊的C文件,偶然用VC打開一看,全亂了。研究了半天,發現SI對每一個字符的寬度不太一致。
請教同事發現選上"view --> draft view", 就可讓每一個字符的寬度一致了。快捷鍵是 "Alt + F12"

三、"shift+F8" 標亮全部文本中光標所在位置的單詞

四、跳到某一行:"ctrl + g"

Source Insight是閱讀和編寫代碼的好東東,基本上也算得上是經典之做了,雖然還有一點點小bug,不過對於咱們這些C程序員來講但是一旦擁有別無所求。下 列小技巧是在工做中同事整理總結的,對提升工做效率多少有點幫助,其中有些是對應於SVN的,沒有使用SVN作版本管理的人就不要白費力氣了。

ShellExecute open explorer /e,/select,%f
/*做用是在資源管理器中打開當前編輯文件並選中*/
/*能夠設置快捷鍵如ctrl+e,這樣能很方便的在資源管理器打開對應的文件,並進行tortoiseSVN的相關操做*/

X:\Progra~1\TortoiseSVN\bin\TortoiseProc.exe /command:log /path:% /notempfile /closeonend
/*使用前注意更改對應的bin安裝路徑*/
/*做用是直接查看當前文件的svn log*/
/*能夠設置快捷鍵如ctrl+l*/

X:\Progra~1\TortoiseSVN\bin\TortoiseProc.exe /command:diff /path:% /notempfile /closeonend
/*使用前注意更改對應的bin安裝路徑*/
/*做用是直接查看當前文件和基準版本的比較*/
/*能夠設置快捷鍵如ctrl+d*/

Source Insight中的文件過濾器

遇到在新建工程的時候,須要加入一些除了.c .h 等以外的文件,好比.s,.scf ,Makefile和ReleaseNotes等文件,而每次新建工程的時候,即便取消了shown only known document types,和在點擊Add All以後選擇了Recusively add lower sub-directories ,也仍是不能正常識別這類文件,也就不能加入進工程,只能咱們本身手動雙擊添加到工程中,若是文件少還無所謂,可是包含了不少子文件夾的大工程,這樣實在不可行。

百度了下,終於發現解決辦法了:

打開Source Insight,在新建工程以前,進入

Options -> Document Options... Alt-T -> 點擊Document Type的下拉框,而後選擇Make File,在右邊的File Filter中,在原先的*.mak後面加上一個分號,即多個不一樣過濾規則以分號間隔開,再加上*makefile,變成 *.mak;*makefile,而且選中Include when adding to projects,這樣,之後再新建工程的時候,就能夠識別makefile或Makefile了(好像此處Source Insight並不區分大小寫)。

相似的原理,給其餘你想要加入的不一樣的類型的文件,分別加入到原先的一些文件類型後面,注意要用分號隔開,或者直接新建一個文件類型,而後寫上對應的顧慮規則,好比

點擊 Add Type,填入新文件類型的名字Scatter File,File Filter中寫上*.scf,注意再選中下面的Include when adding to projects,這樣就創建了一個新的文件類型, 之後新建工程加入文件時候,系統就可以識別後綴是scf的文件了。

固然感興趣的,還能夠對你新創建的文件類型進行一些格式化設置。包括Parsing,Tab等等設置。

相關文章
相關標籤/搜索