天天看點

Source Insight使用大全

目錄

轉自:http://blog.csdn.net/ghostyu/article/details/7091915

版本記錄... 2

目錄... 3

1 簡介... 5

2 搭建我們的SI環境... 5

2.1 搭建步驟... 5

2.2 說明... 6

3 應用技巧... 6

3.1 初級應用技巧... 6

3.1.1 解決字型不等寬與對齊的問題... 6

3.1.2 把TAB變成4個空格... 7

3.1.3 更改背景色... 7

3.1.4 自動對齊設定: 7

3.1.5 顯示坐标... 7

3.1.6 建立快捷鍵快樂工作... 7

3.2 中級應用技巧... 8

3.2.1 查找... 8

3.2.1.1 Loopup References 8

3.2.1.2 Search Files 9

3.2.1.3 Search Project 9

3.2.2 替換... 9

3.2.2.1 單檔案替換... 9

3.2.2.2 多檔案替換... 9

3.2.3 列操作... 9

3.2.4 Edit Condition. 9

3.3 進階應用技巧... 10

3.3.1 Source Link. 10

3.3.2 智能重命名(Smart Rename) 10

3.3.3 Renumber 11

3.3.4 SI中正規表達式... 11

3.3.4.1 通配符... 11

3.3.4.2 表達式中的組... 12

4 Quicker宏在SI中的使用... 12

4.1 如何配置 Quicker 宏... 12

4.2 幾個常用的 Quicker 宏... 12

4.2.1 标準說明生成... 13

4.2.1.1 config (co) 配置使用者名和标題的說明語種... 13

4.2.1.2 file (fi) 生成标準的檔案頭... 13

4.2.1.3 func (fu) 生成标準的函數頭說明... 13

4.2.1.4 hi 增加修改曆史清單... 13

4.2.1.5 hd 自動生成函數頭檔案... 13

4.2.1.6 Hdn 生成新的有檔案... 13

4.2.2 代碼修改注釋... 13

4.2.2.1 pn 添加問題單号... 13

4.2.2.2 ap 添加問題單修改說明... 13

4.2.2.3 ab 添加開始說明... 14

4.2.2.4 ae 添加結束指令... 14

4.2.2.5 abg 插入添加開始和結束說明... 14

4.2.2.6 db 删除開始指令... 14

4.2.2.7 de 删除結束指令... 14

4.2.2.8 dbg 插入删除開始和結束說明... 14

4.2.2.9 mb 修改開始指令... 14

4.2.2.10 me 修改結束指令... 15

4.2.2.11 mbg 插入修改開始和結束說明... 15

4.2.3 其餘幾個常用宏... 15

4.2.3.1 将從C++的 // 注釋改為标準的C 注釋... 15

4.2.3.2 能自動将Tab轉換成空格(mstp_out.c)... 15

4.2.3.3 插入目前的函數名... 15

4.2.3.4 自動在函數入口、出口插入、删除列印函數... 15

4.2.3.5 自動格式目前行... 16

4.2.3.6 更新函數清單... 16

4.2.3.7 複合語句删除... 16

5 附錄... 17

5.1 SI預設快捷鍵彙總... 17

5.2 推薦格式... 20

6 參考文獻... 20

7 聯系方式... 20

1 簡介

套用下網上有人對SI(即Source Insight)的評價:

Windows下開發人員的至愛,功能強大,界面友好。支援文法高亮、符号跳轉,還支援函數調用關系圖顯示。這是一個專業的程式設計環境,很多大公司都是使用它的。這個編輯器除支援完善的自定義功能外,幾乎所有配置都能作個性化配置。除此之外,它本身帶有一套功能強大的宏語言(Macro Language),借助這種語言可以很友善的程式設計實作各種特殊功能,非一般編輯器所能比拟。查找功能支援得也很不錯。雖然在工程較大時,查找起來有點慢。但是它除了一般編輯器所支援的普通字元串查找、正規表達式查找外,還能支援關鍵字查找-這種方式比前兩者快得多,也算是一個彌補。不足之處是列模式較弱,對中文支援有缺陷。

本文主要讨論如下幾點:

Ø 如何搭建一個友善我們程式設計人員的SI環境;

Ø SI使用中有哪些常用且好用的技巧;

Ø SI的宏功能是怎麼回事?我們如何使用它?

特别聲明:本文是本人根據網上搜尋到的相關文獻,結合自己的使用習慣,編寫而成的,若觸犯到您的權利,請聯系我,聯系方式見文章最後,謝謝!

[原創文章,轉載請保持文章完整,并注明出處。更多精彩文章請通路http://blog.csdn.net/sikinzen]

2 搭建我們的SI環境

這一章我們直接讨論怎麼将SI搭建成我最終設定的“良好”開發環境,至于其中的原理,請看後續幾章。

2.1 搭建步驟

1. 使用UltraEdit工具修改Quicker.em檔案

查找 “InsertFileHeaderEN” 和 “InsertFileHeaderCN” 兩個函數,将其中的公司資訊更改為相應的資訊。

2. 安裝 Quicker.em宏

Ø 将Quicker.em檔案拷貝到SI安裝後在“我的檔案”下生成的目錄,如:【…/My Documents/Source Insight/Projects/Base】;

Ø 運作SI,打開Base工程,如果沒有該工程,則生成它,将Quicker.em加入到工程中;

Ø 安裝觸發熱鍵和菜單,打開SI的Options的Key Assignments菜單,在Command視窗中選擇Macro: AutoExpand然後對其賦一個熱鍵,例如Ctrl Enter;

Ø 在任意一個打開的檔案中輸入 “config”,而後敲入上一步驟賦予的熱鍵,根據提示選擇 語言 并輸入 使用者名;請注意:使用者名不能使用中文,不支援。

Ø 配置ok。

3. 安裝配置檔案

選擇Options的Save Configuration先儲存自己的配置,以便回退,回退時選擇Options的Load Configuration來裝載該配置;

将SIKINZEN_GLOBAL.CF3檔案拷貝到:【…/My Documents/Source Insight/Settings】下;

選擇Options的Load Configuration來裝載SIKINZEN_GLOBAL.CF3配置檔案,出現導入的對話框,勾選All configuration settings;

2.2 說明

通過如上步驟,我們的SI做了兩方面的變化:

1. 更改了SI的界面顯示

主要有:設定字型為等寬、更改SI的背景色等,這方面請看第三章。

2. 增加新功能

通過 宏檔案,我們給SI增加了自動添加檔案頭、自動根據源檔案生成頭檔案、自動生成while語句等很多程式設計人員喜歡的功能;關于這方面,請看第四章。

3 應用技巧

3.1 初級應用技巧

3.1.1 解決字型不等寬與對齊的問題

恐怕這是大部分朋友在使用SI中碰到的第一個問題:在UltrEdit等軟體中對齊得很好的代碼到了SI中就都亂了,這原因主要有兩個:一個是SI采用的不等寬字型原因,另一個是SI中Tab鍵等效的空格數與UE中不同;

解決辦法如下:

Ø SI 的預設字型是Verdana的,它是一變寬字型,請在Document style中可以将字型改為定寬的Courier New;

Ø Options-> Document Options裡面的右下角Editing Options欄裡,確定Tab Width=4,然後确定。現在TAB鍵的縮進和四個空格的縮進在SIS裡面看起來就對齊了;

一般來說,設定這兩項就ok了,但筆者發現:在我的SI中,這還沒完!SI中C代碼的注釋中仍然是不對其的,解決辦法如下:

Ø 打開一個C程式,在Options-> Style Properties頁面中,選擇左邊的”Comment”項,看到右邊的”Font Name” 項了嗎?如果是Verdana這種不等寬字型的話,将之改為”=”吧。

在很多公司(如華為)的程式設計規範裡,都有不能用TAB鍵而必須用4個SPACE代替的說法。其實我慢讨厭這個規定的,不過以前寫代碼時很頭痛的問題确實是在SI界面中的tab鍵對齊中,即使設定好了Tab Width=4,按四個空格所顯示的縮進,和按TAB鍵的縮進位置就是不同,後者要更靠裡面三個字元的位置,但在左下角看到的Col=5都是一樣的。這樣的代碼在SI裡看了不對齊,到UE裡看了卻是對齊的。而SI裡面看着對其的代碼,在UE裡面會差三格。這就是沒有設定上述第二項的原因。

3.1.2 把TAB變成4個空格

Ø Options-> Document Options裡,選上 Expand Tabs,并確定 Tab width = 4;

Ø 如果需要把已經編輯成Tab的文本轉換,先選中所有文本,"Edit" - "Special Edit" - "Tabs to Spaces"。

這裡還有一個在使用中把TAB鍵程式設計空格的方法:

Ø Options/Document Options頁面Expand tabs選項選中的話,則以後按tab時将轉換為空格。

3.1.3 更改背景色

更改SI使用的windows background背景色為灰色,不傷眼(白色對眼睛的傷害最大)。

3.1.4 自動對齊設定:

在C程式裡, 如果遇到行末沒有分号的語句,如IF、WHILE、SWITCH等,寫到該行末按回車,則新行自動相對上一行縮進兩列。

Option->Document option下的Auto Indient中Auto Indient Type有三種類型 None、Simple和Smart。個人推薦選用Simple類型,或者選擇Smart,但不勾選Smart Indent Options中的兩個可選項。

3.1.5 顯示坐标

通常情況下在視窗狀态欄左下方,會顯示目前光标所在行列資訊,但我們可以更徹底點: 選擇Options/Document Options頁面,勾選其中的Show line numbers,同時勾選其中的Show right margin,我們就可顯示一條右邊界,随時提醒我們是否該行代碼寫得過長了。

3.1.6 建立快捷鍵快樂工作

1. 恢複ctrl+a的全選功能

在SI的Options的Key Assignments菜單種,在Command視窗中通過關鍵詞save 找到save all,更改為ctrl+shift+a,通過關鍵詞select找到select all,更改為ctrl +a;

2. Source Insight常用的快捷鍵:

Ø Ctrl+F:本檔案内查找;

Ø Ctrl+H:替換文本;

Ø F9:左邊縮進;

Ø F10:右邊縮進;

Ø F3:本檔案查找結果的上一個:

Ø F4:本檔案查找結果的下一個;

Ø F5 或者 CTL+G:指定行号,實作行跳轉,在遇到編譯錯誤的時候,能特别友善的找到出錯行;

Ø Shift+F8:高亮顯示指定辨別,快速浏覽辨別的使用情況;

Ø Ctrl +/ :Look up reference;

Ø F7:打開Browse Project Symbols視窗,快速浏覽工程内辨別定義;

Ø F8:浏覽本地文法(彈出該檔案文法清單視窗,如果你光标放到一個變量/函數等,那麼列出本檔案該變量/函數等的資訊) ;

Ø Ctrl+I:插入一行;

Ø Ctrl+K:複制一行;

Ø Ctrl+U:剪切一行;

Ø Home:到行首;

Ø End:到行尾;

Ø Ctrl+Home:到檔案頭;

Ø Ctrl+End:到檔案底部;

Ø Shift+F6:選擇一行;

Ø Shift+F5:選擇一個單詞;

Ø Ctrl+Tab, Ctrl+Shift+Tab:最後一個視窗;

3.2 中級應用技巧

3.2.1 查找

3.2.1.1 Loopup References

我們最常用的一種查找方式是選擇Search/Lookup References或按Ctrl+/組合鍵再或者滑鼠點 R 按鈕,在彈出的Loopup References視窗進行查找操作。 在Search Method中有四種可選的查找方式:Simple String、Regular Expression、 Keyword Expression和Look Up Reference。其中Simple String是最普通的查找方式,可以查找檔案中出現的任意字元或字元,甚至可以查找 _upap || u 這樣的字元串,但是在工程較大時,查找過程會較慢。 Regular Expression查找方式将在後面講述正則表達時會介紹到,這裡暫時按下不表。 Keyword Expression和Look Up Reference查找的結果基本相同,但是顯示方式略有差異。這兩種方式都是使用SI預先建立的資料庫,查找起來速度相當快。但通常這種速度隻對在查找辨別符時有明顯效果。對于像函數名,變量名等的查找,強烈建議使用這兩種方式進行查找。

3.2.1.2 Search Files

選擇Search/Search Files或按Ctrl+Shift+F組合鍵,在彈出的Search Files視窗進行查找操作。 在File Name框中可以填入檔案名或檔案夾。注意當要查詢的檔案夾雙包含子檔案夾時,可以勾選Options中的Include Subdirectiories,實作對各層檔案的遞歸搜尋。

3.2.1.3 Search Project

選擇Search/Search Project,在彈出的Search Project視窗進行查找操作。操作與Loopup References幾乎完全一緻,它們各自儲存上次搜尋的配置。

3.2.2 替換

3.2.2.1 單檔案替換

選擇Search/Replace或按Ctrl+H組合鍵,在彈出的Replace視窗進行查找操作。在Search項目裡勾選Selection則僅對目前選中的文檔部分進行替換。另外如果勾選了Confirm Replacements則是逐個确認替換,否則會同時替換所有符合替換條件内容。若點右邊的Files…按鈕,可選擇替換多個檔案的内容。

3.2.2.2 多檔案替換

選擇Search/Replace Files或按Ctrl+Shift+H組合鍵,在彈出的Replace Files 視窗進行查找操作。除了增加New框(替換後的内容)外,其餘均與Search Files視窗相同,可參照查找部分的說明進行操作。

3.2.3 列操作

SI的列操作功能比較弱,但不等于沒有。先按下Alt鍵,接着就可用滑鼠進行列選擇,然後就可以删除指定的列。

3.2.4 Edit Condition

很多代碼尤其是驅動代碼,當中有大量的預編譯定義,以實作對不同硬體配置的支援。在閱讀這樣的代碼時最痛苦的是不能簡單判斷程式實際執行的代碼分枝。大量分枝同時存在,常常會混淆我們的視聽。比如對于下面的代碼:

#ifdef DEV1

#else

#endif

如果确定我們目前分析的是DEV1的執行情況,那麼可以選擇Edit菜單的Edit Condition 選項,在彈出的Conditional Parsing視窗中把DEV1的值設定為True,那麼 #ifdef DEV1就等價于#if 1了,相當注釋掉了#else分枝的代碼。反之,設定為Flase時,則注釋掉#ifdef DEV1分枝的代碼。

Source Insight使用大全

注意:Edit Condition菜單選項必須手動添加到 Edit菜單中。

3.3 進階應用技巧

這節讨論的幾個主題都屬于SI的進階話題,很多我自己都沒有完全搞明白,但毫無疑問的是:如果搞明白了,将使我們更加得心應手地使用SI。

3.3.1 Source Link

Source Link是解析日志資訊時非常有用的一個功能。

總地說來,SourceLink根據特定的搜尋模式,把目前檔案中滿足模式的行、連結到由該行指定的其他源檔案中。

所謂特定的搜尋模式,共有兩種:“File, then line” 和 “Line, then file”,其中前後兩部分依靠正規表達式的組的概念來予以分割。如果目前檔案具有比對行,比如“Error d:tcsrcq5.c 18: Lvalue required in function jsSort”,那麼SourceInsight在該行建立SourceLink、把該行連結到由該行指定的檔案中(即d:tcsrcq5.c,第18行)。

1. 建立SourceLink

運作Search菜單的Parse Source Links…指令,在彈出的框中、選擇搜尋模式、并填入相應的正規表達式串,點OK,SIS就會解析目前檔案,如果有比對,就建立SourceLink。

2. 在解析日志資訊時,使用SourceLink

可以打開日志資訊,運作Parse Source Links指令,日志中能夠比對模式的每一行(通常是含有錯誤資訊的行)、就會被設定上一個SourceLink

3. 在解析自定義指令輸出時,使用SourceLink

首先勾選Custom Command 中的“Parse Links in Output”,然後選擇特定的搜尋模式,最後填入合适的正規表達式。這樣,Source Insight把輸出資訊作為目前搜尋用檔案;并且,如果有比對行(通常即編譯錯誤資訊行),SIS為 該行建立SourceLink、并把每一個錯誤資訊中給定的檔案(和行号)作為link目的地,這對于我們修改源代碼錯誤非常有幫助。

3.3.2 智能重命名(Smart Rename)

這一節的那個我沒看明白,或許也是個雞肋?不過看SI的幫助手冊中,似乎蠻推崇的。

一般來說,普通的單檔案替換指令已足以已滿足工作要求。但SI還提供了 上下文敏感的全局搜尋替換功能------智能重命名。

在Edit菜單中選Smart Rename或按Ctrl+’ 組合鍵,即可彈出Smart Rename視窗。它有很強大的功能,但最便捷的使用方式是更改函數内局部變量的名字,操作隻作用于函數内部,速度非常快。

SourceInsight的搜尋索引(search index)使得搜尋過程進行地非常快。而且,使用Smart Rename所做的替換會被記錄在Search Results視窗中,每一條替換記錄旁有一個SourceLink連結到替換發生地檔案。

3.3.3 Renumber

使用Ctrl+R将彈出Renumber視窗,這個用于處理數字順序排列的情況相當有效,比如數組下标。例如現有代碼:

array[0] = 1; array[1] = 2; array[2] = 3;

現在要改為

array[0] = 0; array[1] = 1; array[2] = 2; array[3] = 3;

當然可以一個個修改,但最快的方式是在array[0] = 1;之前添加array[0] = 0;,然後列選數組下标,使用Renumber功能以 0為起始值重填數值。

注:我在使用中實作不了上面這個例子。

3.3.4 SI中正規表達式

由于在查找及替換中,經常會使用用正規表達式,這裡對SI的正規表達式進行簡單介紹。

3.3.4.1 通配符

正規表達式通配符總表

Character Matches
^ (在表達式開始處) 行的開始部分
. 任意單個字元
[abc] 任意屬于集合 abc 的單個字元
[^abc] 任意不屬于集合 abc 的單個字元
* 前面字元的0個或多個重複
+ 前面字元的1個或多個重複
/t 一個 tab 字元
/s 一個空格符
/w 一個空白符(包括 tab 符和空格符)
$ 行的結束部分

關于正規表達式,推薦檢視《精通正規表達式》。

3.3.4.2 表達式中的組

在執行替換操作時,組将大有用武之地。正規表達式的各個部分可以用/(和/)進行分隔,分隔得到的每一項就是一個組。在進行替換時可通過組從比對内容中抽取出特定串。在正規表達式中每個組都有一個編号,自左至右編号從1開始。

例如:abc/(xyx/)将能比對 abcxyz ,此時組1就包含了 xyz 串。在進行替換操作時,就可以通過在替換後内容框中填入/1來取出這個字元串。推而廣之,可以使用/<number>來取得組<number>所包含的串。

例如:當設定把/(abc/)/(xyz/)替換為/2/1的替換規則時,對于 abcxyz 被替換串,則組1包含 abc,組2包含 xyz,而替換後的内容定義為組2内容後跟組1内容(/2/1),是以将得到 xyzabc。

4 Quicker宏在SI中的使用

Marco是sourceinsight軟體一個強大的功能(個人認為是最強大且有趣的功能),使用者可以通過編寫宏來實作自定義功能。這裡有個比較流行的宏檔案quicker.em,該宏檔案提供的功能比較全,能滿足開發的一般需求。通過該宏,我們可以實作 自動生成注釋、自動生成.c對應的頭檔案等一大堆功能,提高開發效率。

順道提下該宏的來源:該檔案是華為的lushengwen(盧勝文,工号2萬多)于2002年進行整理和開發的。後來該高手在2003年華三成立時劃到了華三公司,不知道現在還在不在華三。呵呵。

所有Quicker.em定義的功能都可以在SI的Options工具菜單的Key Assignments對話框裡通過macro關鍵字找到。

4.1 如何配置 Quicker 宏

具體搭建步驟請參考 2.1節。

對于宏FormatLine、UpdateFunctionList、InsertTraceInfo、InsertFuncName、ReplaceBufTab、ReplaceTabInProj和ComentCPPtoC等功能,可以根據情況定義為菜單或熱鍵。

Quicker有兩種指令,一種是擴充指令,一種是普通指令:

² 擴充指令:在代碼檔案中輸入指令名,然後按前面AutoExpand宏所定義的熱鍵來執行該指令;

² 普通指令:直接根據定義的熱鍵或菜單來執行;

目前一般的擴充指令都對應有相應的普通指令。

4.2 幾個常用的 Quicker 宏

完整的Quicker宏說明請參考《quicker.doc》,這裡列出些個人覺得比較常用的Quicker宏。

4.2.1 标準說明生成

4.2.1.1 config (co) 配置使用者名和标題的說明語種

使用者名就是前面自動生成的作者,修改者的名字,語種,就是前面提到的檔案頭說明和函數頭說明所采用的的語言有中文和英文兩種選擇

4.2.1.2 file (fi) 生成标準的檔案頭

自動生成如下格式,它能自動取得檔案名,作者名,時間,以及函數清單,而且在生成的過程中會主動彈出功能描述能的内容輸入對話框(提示對話框隻能輸入256個字元),輸入的内容能夠自動換行對齊,這樣既可以避免遺漏說明,而且一般在詳細設計中對每個檔案的主要功能都有詳細的描述,隻要把這些描述 拷貝過來即可,它能自動排列好, 非常友善。

4.2.1.3 func (fu) 生成标準的函數頭說明

其自動生成函數頭,該函數必須在該函數的前一行執行,它能自動取得函數名,能夠自動取得函數的輸入、輸出參數,并且排列好。能夠 提示輸入功能描述,輸入的内容能夠自動換行對齊,這樣既可以避免遺漏說明,而且一般在詳細設計中對每個函數的主要功能都有詳細的描述,隻要把這些描述 拷貝過來即可,它能自動排列好, 非常友善。 (因為SI的宏功能有限,沒能自動加入調用函數和被調函數的功能)

如果不是在已存在的函數前執行則提示輸入函數名,提示輸入函數描述,提示輸入傳回值類型,提示輸入函數入口參數,輸完後按Esc退出

4.2.1.4 hi 增加修改曆史清單

自動在該行增加修改曆史清單,用于檔案頭和函數頭說明中的曆史記錄更新。

注意:該功能不能在檔案最後一行輸入。

4.2.1.5 hd 自動生成函數頭檔案

該指令能夠自動生成但前C檔案的頭檔案定義,包括常用的宏定義,還有全部的函數原型定義。

4.2.1.6 Hdn 生成新的有檔案

該指令能夠自動生成指定的的頭檔案定義,包括常用的宏定義,提示輸入函數原型的類型。

4.2.2 代碼修改注釋

4.2.2.1 pn 添加問題單号

在進行問題單修改時都要求在修改的地方注明問題單号和修改人以及修改時間,大部分一個問題單的修改都會涉及到幾個地方,本功能提供自動取問題單号的功能,下面的幾個指令所生成的問題單号就是由它提供,如果輸入為#則不顯示問題單号

4.2.2.2 ap 添加問題單修改說明

該指令提示輸入問題單号和修改原因,生成如下格式的說明

4.2.2.3 ab 添加開始說明

它能自動生成如下說明:

1.有問題單号的情況,其中問題單号是由ap指令加入的。

2.沒有問題單号的情況,

4.2.2.4 ae 添加結束指令

該指令是as的對應指令,表示結束添加

支援塊指令操作

4.2.2.5 abg 插入添加開始和結束說明

該指令是前兩個指令的組合

支援塊指令操作

4.2.2.6 db 删除開始指令

它能自動生成如下說明:

1.有問題單号的情況,其中問題單号是由ap指令加入的。

2.沒有問題單号的情況,

4.2.2.7 de 删除結束指令

該指令是ds的對應指令,表示删除結束

4.2.2.8 dbg 插入删除開始和結束說明

該指令是前兩個指令的組合

支援塊指令操作

4.2.2.9 mb 修改開始指令

它能自動生成如下說明:

1.有問題單号的情況,其中問題單号是由ap指令加入的。

2.沒有問題單号的情況,

4.2.2.10 me 修改結束指令

該指令是ms的對應指令,表示删除結束

4.2.2.11 mbg 插入修改開始和結束說明

該指令是前兩個指令的組合

支援塊指令操作

4.2.3 其餘幾個常用宏

4.2.3.1 将從C++的 // 注釋改為标準的C 注釋

ComentCPPtoC() 檔案中的//注釋自動修改為注釋,因為很多C編譯器不能很好的處理C++風格的 // 注釋,用該指令可以友善的将選中區域内的//注釋進行修改,建議将該宏定義在菜單中。

4.2.3.2 能自動将Tab轉換成空格(mstp_out.c)

ReplaceBufTab() 自動将目前檔案中的Tab轉換成空格

ReplaceTabInProj() 自動将工程中的檔案中的Tab轉換成空格

因為不同的編輯器對tab的長度定義不一至,造成代碼格式紊亂,程式設計規範是不允許用tab鍵的,可以用該宏來将整個檔案的tab進行替換,非常友善,建議将該宏定義在菜單中

4.2.3.3 插入目前的函數名

InsertFuncName() 能自動的插入本函數名,現在的函數名一般較長,特别是在調試列印代碼中為了顯示出出錯的函數經常需要輸入本函數名,該宏能帶來極大友善。建議定義為一個熱鍵 ctrl 1

4.2.3.4 自動在函數入口、出口插入、删除列印函數

注意使用本功能時一定要求所有的語句符合公司程式設計規範,要求一條語句一行,因為各種編碼情況很複雜,特别是老代碼和有大量條件編譯的情況下很難覆寫各種情況,最好在執行完後再檢查一遍。不推薦使用工程内的插入和删除。

InsertTraceInfo() 能夠自動在函數的出、入口首尾加入列印代碼,即在光标處加入一個進入函數的列印,在函數的傳回處加入一個出函數的列印,用于調試跟蹤時很友善,建議定義為熱鍵 Ctrl t;

AutoInsertTraceInfoInBuf()能夠在目前檔案的函數出入口加入列印資訊,建議定義菜單;

AutoInsertTraceInfoInPrj()能夠在目前工程的函數出入口加入列印資訊,建議定義為菜單;

RemoveTraceInfo() 删除InsertTraceInfo()添加的列印資訊,建議定義為菜單;

RemoveCurBufTraceInfo()删除檔案中全部的InsertTraceInfo()添加的列印資訊,建議定義為菜單;

RemovePrjTraceInfo()删除但前工程中全部的InsertTraceInfo()添加的列印資訊,建議定義為菜單;

4.2.3.5 自動格式目前行

FormatLine() 能夠自動将一行長的文字分成多行,并且從第二行開始,起始列為(光标所在列-2),該宏是為了彌補因為對話框隻能處理256個字元而編寫的,當需要輸入超過256個字元的說明時,就可以先把它拷貝到第一行,然後執行本宏,進行分行對齊。

4.2.3.6 更新函數清單

UpdateFunctionList() 能夠自動在光标所在行重新生成函數清單,用于函數頭說明的函數清單更新。

4.2.3.7 複合語句删除

DelCompoundStatement()能自動删除複合語句,定義熱鍵 Ctrl D

對于如下語句,如果我想删除條件 ulCount > 0,隻需将光标放在if語句這一行(藍色行),執行 Ctrl D 即可

stSubsystemRec.hwRBSubSystemCpuAveUsageLimit = CPU_RESTORE_THRESHOLD;

if( ulCount > 0 )

{

stSubsystemRec.hwRBSubSystemAdminStatus = ADSTATUS_DOWN;

stSubsystemRec.hwRBSubSystemCpuMaxUsageLimit = CPU_ALARM;

stSubsystemRec.hwRBSubSystemDSPAveUsageLimit = DSP_ALARM;

stSubsystemRec.hwRBSubSystemDSPMaxUsageLimit = DSP_RESTORE;

stSubsystemRec.hwRBSubSystemOperStatus = OPSTATUS_OTHER;

}

stSubsystemRec.hwRBSubSystemIndex = 0;

stSubsystemRec.hwRBSubSystemIpAddress = ulIpAddr;

執行結果

stSubsystemRec.hwRBSubSystemCpuAveUsageLimit = CPU_RESTORE_THRESHOLD;

stSubsystemRec.hwRBSubSystemAdminStatus = ADSTATUS_DOWN;

stSubsystemRec.hwRBSubSystemCpuMaxUsageLimit = CPU_ALARM;

stSubsystemRec.hwRBSubSystemDSPAveUsageLimit = DSP_ALARM;

stSubsystemRec.hwRBSubSystemDSPMaxUsageLimit = DSP_RESTORE;

stSubsystemRec.hwRBSubSystemOperStatus = OPSTATUS_OTHER;

stSubsystemRec.hwRBSubSystemIndex = 0;

stSubsystemRec.hwRBSubSystemIpAddress = ulIpAddr;

5 附錄

5.1 SI預設快捷鍵彙總

退出程式 : Alt+F4

重畫螢幕 : Ctrl+Alt+Space

完成文法 : Ctrl+E

複制一行 : Ctrl+K

恰好複制該位置右邊的該行的字元 : Ctrl+Shift+K

複制到剪貼闆 : Ctrl+Del

剪切一行 : Ctrl+U

剪切該位置右邊的該行的字元              : Ctrl+;

剪切到剪貼闆 : Ctrl+Shift+X

剪切一個字 : Ctrl+,

左邊縮進 : F9

右邊縮進 : F10

插入一行 : Ctrl+I

插入新行 : Ctrl+Enter

加入一行 : Ctrl+J

從剪切闆粘貼 : Ctrl+Ins

粘貼一行 : Ctrl+P

重複上一個動作 : Ctrl+Y

重新編号 : Ctrl+R

重複輸入 : Ctrl+/

替換 : Ctrl+H

智能重命名 : Ctrl+'

關閉檔案 : Ctrl+W

關閉所有檔案 : Ctrl+Shift+W

建立 : Ctrl+N

轉到下一個檔案 : Ctrl+Shift+N

打開 : Ctrl+O

重新裝載檔案 : Ctrl+Shift+O

另存為 : Ctrl+Shift+S

顯示檔案狀态 : Shift+F10

激活文法視窗 : Alt+L

回到該行的開始 : Home

回到選擇的開始 : Ctrl+Alt+[

到塊的下面 : Ctrl+Shift+]

到塊的上面 : Ctrl+Shift+[

書簽 : CTRL+M

到檔案底部 : Ctrl+End、Ctrl+(KeyPad) End

到視窗底部 : (KeyPad) End (小鍵盤的END)

到一行的尾部 : End

到選擇部分的尾部 : Ctrl+Alt+]

到下一個函數 : 小鍵盤 +

上一個函數 : 小鍵盤 -

後退 : Alt+,, Thumb 1 Click

後退到索引 : Alt+M

向前 : Alt+., Thumb 2 Click

轉到行 : F5, Ctrl+G

轉到下一個修改 : Alt+(KeyPad) +

轉到下一個連結 : Shift+F9, Ctrl+Shift+L

回到前一個修改 : Alt+(KeyPad) -

跳到連接配接(就是文法序列槽清單的地方) : Ctrl+L

跳到比對 : Alt+]

下一頁 : PgDn, (KeyPad) PgDn

上一頁 : PgUp, (KeyPad) PgUp

向上滾動半屏 : Ctrl+PgDn, Ctrl+(KeyPad) PgDn, (KeyPad) *

向下滾動半屏 : Ctrl+PgUp, Ctrl+(KeyPad) PgUp, (KeyPad) /

左滾 : Alt+Left

向上滾動一行 : Alt+Down

向下滾動一行 : Alt+Up

右滾 : Alt+Right

選擇一塊 : Ctrl+-

選擇目前位置的左邊一個字元 : Shift+Left

選擇目前位置右邊一個字元 : Shift+Right

選擇一行 : Shift+F6

從目前行其開始向下選擇 : Shift+Down

從目前行其開始向上選擇 : Shift+Up

選擇上頁 : Shift+PgDn, Shift+(KeyPad) PgDn

選擇下頁 : Shift+PgUp, Shift+(KeyPad) PgUp

選擇句子(直到遇到一個 . 為止) : Shift+F7, Ctrl+.

從目前位置選擇到檔案結束 : Ctrl+Shift+End

從目前位置選擇到行結束 : Shift+End

從目前位置選擇到行的開始 : Shift+Home

從目前位置選擇到檔案頂部 : Ctrl+Shift+Home

選擇一個單詞 : Shift+F5

選擇左邊單詞 : Ctrl+Shift+Left

選擇右邊單詞 : Ctrl+Shift+Right

到檔案頂部 : Ctrl+Home, Ctrl+(KeyPad) Home

到視窗頂部 : (KeyPad) Home

到單詞左邊(也就是到一個單詞的開始) : Ctrl+Left

到單詞右邊(到該單詞的結束)              : Ctrl+Right

排列文法視窗(有三種排列方式分别按1,2,3次) : Alt+F7

移除檔案 : Alt+Shift+R

同步檔案 : Alt+Shift+S

增量搜尋(當用Ctrl + F 搜尋,然後按F12就會轉到下一個比對) : F12

替換文本 : Ctrl+Shift+H

向後搜尋 : F3

在多個檔案中搜尋 : Ctrl+Shift+F

向前搜尋 : F4

搜尋選擇的(比如選擇了一個單詞,shift+F4将搜尋下一個) : Shift+F4

搜尋 : Ctrl+F

浏覽本地文法(彈出該檔案文法清單視窗,如果你光标放到一個變量/函數等,那麼列出本檔案該變量/函數等的資訊)       : F8

浏覽工程文法 : F7, Alt+G

跳到基本類型(即跳到原型)                : Alt+0

跳到定義出(也就是聲明)                  : Ctrl+=, Ctrl+L Click (select), Ctrl+Double L Click

檢查引用 : Ctrl+/

文法資訊(彈出該文法的資訊)              : Alt+/, Ctrl+R Click (select)

高亮目前單詞 : Shift+F8

文法視窗(隐藏/顯示文法視窗)             : Alt+F8

關閉視窗 : Alt+F6, Ctrl+F4

最後一個視窗 : Ctrl+Tab, Ctrl+Shift+Tab

5.2 推薦格式

套用下參考文獻1中的說法:人各有志!個人興趣不同,推薦大家可以在 2.1 節基礎上進行修改。

6 參考文獻

1. Source Insight 的實用技巧: http://blog.csdn.net/Jupin/archive/2007/10/19/1832536.aspx

繼續閱讀