小華的部落格: Source Insight v.s SlickEdit® 2007

搜尋此網誌

星期四, 7月 12, 2007

Source Insight v.s SlickEdit® 2007

============================
Program Editor and Analyzer
============================
最近為了撰寫程式碼上的方便,分別去試用了兩套軟體,這兩套軟體都是用來撰寫程式碼與分析程式碼的編輯器,下面就大致上來說一下使用心得。

Source Insight : 目前版本最新版是V3.50.0057 ,他跟一般的程式碼編輯器比較起來功能強很多,像是你可以在變數名稱的關鍵字上面按下滑鼠右鍵就可以很方便的移動到定義(Go to definition)的地方或是列舉出參考(Reference)到的地方,另外針對函數或是變數...等,都有很不錯的顏色來區分,另外它還可以執行一些外部程式,我自己就用VB6寫了一些外部程式,然後按下熱鍵就可以呼叫我的程式來輔助編輯,像是說常常我們需要寫註解,那麼你就可以用Vb6 寫一段程式碼呼叫Postmessage API 對Source Insight 編輯區插入一段字串而省去打字的時間,另外專案檔的管理與搜尋也別具特色,他有檔案瀏覽器,你可以直接輸入你要找的檔案名稱,然後會列表出來,接著你就可以用滑鼠去點擊檔案來編輯,缺點就是字型太小,如果改大一點會變亂掉,另外就是不能編輯Unicode,且編輯畫面太小,附加的功能要自己利用其他語言工具開發...等。

SlickEdit® 2007 : 基本上Source Insight 有的他都有,編輯器長的很像UltraEdit,但是有比UltraEdit更強大的功能,像是Tag的建立與搜尋速度,可以連結VC6或是VisualStudio 直接Build或是Compiler你的程式碼,程式碼的分析與Symbols 搜尋也很快,缺點就是對於顏色的區分要自己手動建立,而且函數後面的括號多空一個就不會被當成函數顯示,不過這個缺點也是優點,因為他有提供Alias ,Macro...方式去增加你自己想要的功能,而且可以全螢幕編輯,畫面字體也大很多,簡言之就是他很多東西都要自己手動調整,如果你會調,調出來的功能一定比Source Insight 強大,所以使用後的心得是如果你貪圖方便,就用Source Insight就應該夠用了,如果你沒辦法忍受Source Insight編輯器畫面,又沒辦法忍受UltraEdit龜速的分析程式碼或是搜尋程式碼相關性的地方,那麼你就一定要考慮SlickEdit® 2007。

有人會想說幹麻自己去找編輯器,一般VC6或是Visual Studio不是就已經整合到IDE中了嗎 ? 沒錯,他們都已經有了,不過只能針對C/C++ 編輯,像我這種有.asm .c .cpp .inf .xxx 混合的專案就沒辦法編輯與分析了,因此要自己找一個編輯器可以用來管理分析程式碼,因此比較來比較去,就是這兩套最好用,而試用版在他們官方網站就可以找到了。

底下是一些設定的方式:

字體:
Tools->Options->Font
個人覺得最好看的是FixedSys。

顯示改動過的行標記:
Tools->Options->File Extension Setup
Advanced-Color coding-Modified lines

自動在保存的時候清除修改標記:
Tools->Options->File Options
Save-Reset line modify

這個標籤頁還有兩個實用的選項:
Expand tabs to spaces,保存時把Tab變成空格(有的地方要求必須用空格縮進)
Strip trailing spaces,刪掉行末尾的空白

快點顯示Symbol的代碼資訊:
下面的Symbol視窗類似與Source Insight的上下文視窗,會顯示當前函數或者巨集的代碼。
Tools->Options->Tagging Options
Updtae toolbars after ms idle:
縮短顯示代碼的速度。我用150。機子夠快扛得住就弄小點。

修改該死的自動語法範本:
Tools->Options->File Extension Options
Indent-Syntax expansion-Minmum expandable keyword length:
建議設置為3,如果為默認的1的話,你根本不能用i做變數。因為只要i起頭後面一個空格就是一個if () {},吐血。

滑鼠移到函數或者識別字上面顯示資訊:
Tools->Options->File Extension Options
Tagging-Show info for symbol under mouse
這部分其他的鉤也可以選上,減輕工作量啊。

對當前檔類型都顯示行號:
Tools->Options->File Extension Setup
General-Display line numbers

修改行號顏色:
Tools->Options->Color
不是Line Number,而是Line Prefix Area~~吐血 -_-!
改GCC的設置:
必須在建立了GNU C/C++專案後才能在Build裏面找到GNU C Options

設置專案的Build之類的功能表命令:
Project->Project Properties->Tools
選中一個Configuration以後就能配置編譯器和調試器
另外,在下面的Build視窗可以直接敲命令。比如make,dir什麼的,很方便

同時啟動多個SlickEdit
使用隱藏的命令開關“+new”即可。只要把SlickEdit的快捷方式修改成這樣:
"E:\Program Files\SlickEdit\win\vs.exe" +new

解決Slickedit某些視窗字體模糊的問題
比如Open Form的窗口,
用UE打開vs.exe、vsapi.dll兩個文件,查找“OEM Fixed Font”,會找到有OEM Fixed Font..Terminal的地方。把Terminal改成Fixedsys,注意要用覆蓋模式,不能改變了檔的長度,然後存檔即可。

將Slickedit的Projects資源列表切換成檔夾模式
Slickedit的檔排列是按照Source,Head之類的分的,很不習慣,把它改成按照檔夾結構
在Projects視窗中點擊一個vpj檔,按右鍵;選擇Auto Folder→Directory View,會出來一個警告框。再點OK就好了

Workspace分類管理
Workspace多了以後分類管理會比較方便
Project->Organize all workspace,可以用目錄的形式對workspace進行管理,
注意這裏並不會改變你workspace檔的位置,只是在slickedit裏面的分類而已。

如果發現路徑的'\'顯示成了中文的'¥'字元,那麼可以設置一下字體就可以了如果在XP下,直接將所有的字體都設置成 Default Fixed Font 就不錯。

增加Alias
選取一段文字-->按滑鼠右鍵選Create Alias

編輯滑鼠右鍵的Pop Menu
按滑鼠右鍵-->選Edit this Menu
如果你要把你的設定檔給別人使用,那麼你可以直接複製C:\Documents and Settings\你的使用者名稱\My Documents\My SlickEdit Config\內的 "12.0.2"這個目錄,但是要切記編輯滑鼠右鍵的Pop Menu
中的Version Control選項不能夠刪除掉,不然你複製過去的組態會不能使用,而且會出現錯誤訊息。

[註] 破解版請自行使用Google搜尋,或是使用IDA Pro ...等反組譯工具去修正某個DLL跟EXE就可以了...
不過我還是要說一句話,請尊重智慧財產權,愛用正版....感恩喔!

Reference
Source Insight V3.50.0057
http://sourceinsight.com/

SlickEdit® 2007 Version 12.0.2.0
http://www.slickedit.com/content/view/73/60/

20 則留言:

aaa 提到...

Harrison 你好
我看到你的文章中有提到一篇
關於linux進入保護模式的文章

未post的A20與隱含暫存器的很多東西
請問你是否可以寄給我
我現在急著要看
非常緊急
my email:tatungtatung.tw@yahoo.com.tw

aaa 提到...

Harrison 你好
我看到你的文章中有提到一篇
關於linux進入保護模式的文章

未post的A20與隱含暫存器的很多東西
請問你是否可以寄給我
我現在急著要看
非常緊急
my email:tatungtatung.tw@yahoo.com.tw

彪彪 提到...

請問一下, 我用SlickEdit開*.c的檔都會有顏色區分.我想要開*.vfr跟*.uni的檔案也能跟*.c一樣有顏色顯示,請問要怎麼設定呢?

小華的部落格 提到...

如果comment是// or /*.....*/ 那你直接套用C的格式就可以了,如果是#,則你要先建立一個範本,然後套用這個範本。

Tools-->Options-->File extensions Setup(你的副檔名,例如:.vfr) -->選Advanced.

我的.uni設定如下:
Extension : uni <--你要的副檔名
Color Coding : cpp <--套用cpp的顏色

因為套用cpp的顏色,所以Comment是使用// or /*....*/,當然你也可建立一個#為註解的副檔名,然後配置他的Color coding: [你設定的那一個]

Ivern 提到...
作者已經移除這則留言。
Ivern 提到...
作者已經移除這則留言。
Ivern 提到...

請問在assembly上哪一套軟體比較好用?像是在找symbol上,source insight在project建立時就對整套code建立tag,所以不管它的definition在哪個檔案裡面都找的到,而slickedit只會在目前開啟的檔案中找就發生找不到definition的情狀,麻煩解惑一下 謝謝

匿名 提到...

請問在assembly上哪一套軟體比較好用?像是在找symbol上,source insight在project建立時就對整套code建立tag,所以不管它的definition在哪個檔案裡面都找的到,而slickedit只會在目前開啟的檔案中找就發生找不到definition的情狀,麻煩解惑一下 謝謝

小華的部落格 提到...

回覆葉 :
我試過不管是哪一套都可以做到相同的功能,只是SlickEdit需要自己手動設定,所以我另外寫了一篇 SlickEdit® 2007's Tags 文章,你可以去參考一下。

Ivern 提到...

感謝,了解囉,不過在另外一篇小技巧中,有提到ctrl+d可以直接開啟檔案,我試了一下好像跟你說的不太一樣,我試的結果是change directory改變目前所在的目錄,沒有開啟檔案的功能,我用的版本是12.03試用版,謝謝~

小華的部落格 提到...

回覆葉:
我去測試過新安裝的SlickEdit版本了,果然不行按Ctrl+D >.<

可能是我當初修改到某些功能吧,像是Alias或是巨集...我現在也想不起來改了哪個地方,你就先自己試試看吧 ^^

Lak 提到...

版主你好,我最近也在使用 source insight,想請教你一些問題,不知能否麻煩你指點一二。

利用 source insight 來開一個專案,是否一定要將所有的「相關」檔案引入專案中,而不能像是 VC 一樣只是提供一個路徑讓專案知道某些.h 檔是在某個路徑下?

因為開發的專案很大,有一大堆 .h 檔是要去參考的,但那和我開發的部份無關,實在很不想加入專案內,但又需要能夠看見它的定義。

在 VC 中,只要指定 include 的所有檔案路徑,它就會嘗試去所有的路徑中找尋,不知您這篇文章介紹的這二個軟體有沒有此功能?

若您肯抽時間回答,小弟感謝萬分

小華的部落格 提到...

>在 VC 中,只要指定 include 的所有檔>
>案路徑,它就會嘗試去所有的路徑中找
>尋,不知您這篇文章介紹的這二個軟體有
>沒有此功能?

沒有這個功能,如同你所知道的在建立專案的時候就要去把相關的檔案拉進來,但是你可以決定哪些要拉哪些不拉,這個時候沒有決定好就沒辦法達到你要的功能。

就算你全部拉進來,當你去找參考的檔案的時候,這兩個工具他會顯示是在哪個路徑底下的哪個檔案,此時就是自己判斷了!

例如: 某個.cpp 內有#include "test.h" ,裡面有個變數叫做TestVar

如果你去找定義檔,可能會找到2個test.h內都有變數TestVar

此時你要自己辨識是哪一個test.h內的TestVar才是你要的

如果你不想看到有兩個test.h出現,那你在建立專案的時候就要決定哪一個test.h不要加入Database中被建立Tag..

希望我的回答對你有幫助 ^^

Lak 提到...

實在感謝你,今天去實測了 slickedit,個人認為比 SI 好用,除了 SI 有一個圖形介面的 tree 之外,二者的基本功能都相仿。

而 SE 可以吃下 VS 的專案檔更叫我開心,整個就是很方便,可以在預灌好 VS 的環境下直接使用 SE 來進行開發,省了我很多事。

不過讓我感到奇怪的地方是,它的 symbol 分析只會針對專案下的所有檔案,但對於在專案檔內有 include 的 library path 下的檔,卻不會去分析,我想這是輸給 VS 的唯一地方了,不知大大你有沒有好方法可以解決呢?

另外,感謝你推了這個好軟體讓我有機會使用它,感謝。

我留下我的 msn ,希望有機會可以和你聊聊。

Blog:http://www.wretch.cc/blog/Lak4CYUT

MSN:w879889@ms8.hinet.net

小華的部落格 提到...

是的,我也是覺得SE比較好用,而VS本來就是專門給他們的專案使用,所以很多地方都考慮到了.

而你的問題我可能不清楚,因為實際上我拿SE開發C專案的時間不多(主要用在BIOS,C專案我還是用VS比較多),所以我沒有遇到過你的問題,或許你可以到SE官方網站的討論區看看有沒有你需要的解答...^^

Lak 提到...

沒辨法,我英文太差,用英文去表達我的問題對我來講是有點難度的,所以可能沒法上官網去問...

hoho...汗顏呀!

不過調較過的 SE 真的滿好用的。

順道請教你個問題,請問你知道 SE 能否讓 edit 區域在 line 80 的地方出現一條線?
用來提示程式該寫到那斷行用的..

UE 有這功能..沒這功能對小弟來講也是一個困擾..

匿名 提到...

Harrison 你好
也是看了你的文章才使用SE的,
目前好像是用2007版的,
想請問~~
可以把 current line 的顏色關掉嗎?
我在某一次的安裝後,
不知為何,
游標所在「該行」的顏色會改成單一色。

舉例來說:
int funA (void)
游標指到該行後,字的顏色全變成單一顏色(不希望這樣)
游標移到下一類後,字的顏色就正常(int 是紅色,funA 是白色,void是紅色)

謝謝你

匿名 提到...

您好,請問 Source Insight 要怎樣調整才有辦法讀 bin 檔,因為我怎麼調怎麼選它讀出來都一直是亂碼 >"<

匿名 提到...

小華你好

請問在Source Insight中
要怎麼開啟.uni的檔案
我開起來都是只有一個"?號"
其餘都空白
該怎麼解決這個問題
謝謝

Ian

阿信 提到...

小華你好,
請問一個問題:
在source insight可以辨識出「#if」,「#else」等等,使得畫面上分枝的程式碼像是被註解掉一樣的顏色方便閱讀。
但在DSP組語內為「.if」,「.else」,則source insight無法識別出此為判斷式,把無效的分枝變為被註解掉一樣的顏色。

請問有解決的辨法嗎?謝謝!