3.1.1 解決字體不等寬與對(duì)齊的問(wèn)題... 6 3.1.4 自動(dòng)對(duì)齊設(shè)置: 7 3.1.6 創(chuàng)建快捷鍵快樂(lè)工作... 7 4.2.1 標(biāo)準(zhǔn)說(shuō)明生成... 13 4.2.1.1 config (co) 配置用戶名和標(biāo)題的說(shuō)明語(yǔ)種... 13 4.2.1.2 file (fi) 生成標(biāo)準(zhǔn)的文件頭... 13 4.2.1.3 func (fu) 生成標(biāo)準(zhǔn)的函數(shù)頭說(shuō)明... 13 4.2.1.5 hd 自動(dòng)生成函數(shù)頭文件... 13 4.2.2.1 pn 添加問(wèn)題單號(hào)... 13 4.2.2.2 ap 添加問(wèn)題單修改說(shuō)明... 13 4.2.2.3 ab 添加開(kāi)始說(shuō)明... 14 4.2.2.5 abg 插入添加開(kāi)始和結(jié)束說(shuō)明... 14 4.2.2.8 dbg 插入刪除開(kāi)始和結(jié)束說(shuō)明... 14 4.2.2.11 mbg 插入修改開(kāi)始和結(jié)束說(shuō)明... 15 4.2.3.1 將從C++的 // 注釋改為標(biāo)準(zhǔn)的C /* */注釋... 15 4.2.3.2 能自動(dòng)將Tab轉(zhuǎn)換成空格(mstp_out.c)... 15 4.2.3.3 插入當(dāng)前的函數(shù)名... 15 4.2.3.4 自動(dòng)在函數(shù)入口,、出口插入,、刪除打印函數(shù)... 15 4.2.3.5 自動(dòng)格式當(dāng)前行... 16 1 簡(jiǎn)介套用下網(wǎng)上有人對(duì)SI(即Source Insight)的評(píng)價(jià): Windows下開(kāi)發(fā)人員的至愛(ài),功能強(qiáng)大,,界面友好,。支持語(yǔ)法高亮、符號(hào)跳轉(zhuǎn),,還支持函數(shù)調(diào)用關(guān)系圖顯示,。這是一個(gè)專業(yè)的編程環(huán)境,很多大公司都是使用它的,。這個(gè)編輯器除支持完善的自定義功能外,,幾乎所有配置都能作個(gè)性化配置。除此之外,,它本身帶有一套功能強(qiáng)大的宏語(yǔ)言(Macro Language),,借助這種語(yǔ)言可以很方便的編程實(shí)現(xiàn)各種特殊功能,非一般編輯器所能比擬,。查找功能支持得也很不錯(cuò)。雖然在工程較大時(shí),,查找起來(lái)有點(diǎn)慢,。但是它除了一般編輯器所支持的普通字符串查找,、正則表達(dá)式查找外,還能支持關(guān)鍵字查找-這種方式比前兩者快得多,,也算是一個(gè)彌補(bǔ),。不足之處是列模式較弱,對(duì)中文支持有缺陷,。 本文主要討論如下幾點(diǎn): 如何搭建一個(gè)方便我們編程人員的SI環(huán)境,; SI使用中有哪些常用且好用的技巧; SI的宏功能是怎么回事,?我們?nèi)绾问褂盟?/p> 特別聲明:本文是本人根據(jù)網(wǎng)上搜索到的相關(guān)文獻(xiàn),,結(jié)合自己的使用習(xí)慣,編寫(xiě)而成的,,若觸犯到您的權(quán)利,,請(qǐng)聯(lián)系我,聯(lián)系方式見(jiàn)文章最后,,謝謝,! [原創(chuàng)文章,轉(zhuǎn)載請(qǐng)保持文章完整,,并注明出處,。更多精彩文章請(qǐng)?jiān)L問(wèn)http://blog.csdn.net/sikinzen] 2 搭建我們的SI環(huán)境這一章我們直接討論怎么將SI搭建成我最終設(shè)定的“良好”開(kāi)發(fā)環(huán)境,至于其中的原理,,請(qǐng)看后續(xù)幾章,。 1. 使用UltraEdit工具修改Quicker.em文件 查找 “InsertFileHeaderEN” 和 “InsertFileHeaderCN” 兩個(gè)函數(shù),將其中的公司信息更改為相應(yīng)的信息,。 2. 安裝 Quicker.em宏 將Quicker.em文件拷貝到SI安裝后在“我的文檔”下生成的目錄,,如:【…/My Documents/Source Insight/Projects/Base】; 運(yùn)行SI,,打開(kāi)Base工程,,如果沒(méi)有該工程,則生成它,,將Quicker.em加入到工程中,; 安裝觸發(fā)熱鍵和菜單,打開(kāi)SI的Options的Key Assignments菜單,,在Command窗口中選擇Macro: AutoExpand然后對(duì)其賦一個(gè)熱鍵,,例如Ctrl Enter; 在任意一個(gè)打開(kāi)的文件中輸入 “config”,,而后敲入上一步驟賦予的熱鍵,,根據(jù)提示選擇 語(yǔ)言 并輸入 用戶名;請(qǐng)注意:用戶名不能使用中文,,不支持,。 配置ok,。 3. 安裝配置文件 選擇Options的Save Configuration先保存自己的配置,以便回退,,回退時(shí)選擇Options的Load Configuration來(lái)裝載該配置,; 將SIKINZEN_GLOBAL.CF3文件拷貝到:【…/My Documents/Source Insight/Settings】下; 選擇Options的Load Configuration來(lái)裝載SIKINZEN_GLOBAL.CF3配置文件,,出現(xiàn)導(dǎo)入的對(duì)話框,,勾選All configuration settings; 通過(guò)如上步驟,,我們的SI做了兩方面的變化: 1. 更改了SI的界面顯示 主要有:設(shè)置字體為等寬,、更改SI的背景色等,這方面請(qǐng)看第三章,。 2. 增加新功能 通過(guò) 宏文件,,我們給SI增加了自動(dòng)添加文件頭、自動(dòng)根據(jù)源文件生成頭文件,、自動(dòng)生成while語(yǔ)句等很多編程人員喜歡的功能,;關(guān)于這方面,請(qǐng)看第四章,。 恐怕這是大部分朋友在使用SI中碰到的第一個(gè)問(wèn)題:在UltrEdit等軟件中對(duì)齊得很好的代碼到了SI中就都亂了,,這原因主要有兩個(gè):一個(gè)是SI采用的不等寬字體原因,另一個(gè)是SI中Tab鍵等效的空格數(shù)與UE中不同,; 解決辦法如下: SI 的默認(rèn)字體是Verdana的,,它是一變寬字體,請(qǐng)?jiān)贒ocument style中可以將字體改為定寬的Courier New,; Options-> Document Options里面的右下角Editing Options欄里,,確保Tab Width=4,然后確定?,F(xiàn)在TAB鍵的縮進(jìn)和四個(gè)空格的縮進(jìn)在SIS里面看起來(lái)就對(duì)齊了,; 一般來(lái)說(shuō),設(shè)置這兩項(xiàng)就ok了,,但筆者發(fā)現(xiàn):在我的SI中,,這還沒(méi)完!SI中C代碼的注釋中仍然是不對(duì)其的,,解決辦法如下: 打開(kāi)一個(gè)C程序,,在Options-> Style Properties頁(yè)面中,選擇左邊的”Comment”項(xiàng),,看到右邊的”Font Name” 項(xiàng)了嗎,?如果是Verdana這種不等寬字體的話,將之改為”=”吧。 在很多公司(如華為)的編程規(guī)范里,,都有不能用TAB鍵而必須用4個(gè)SPACE代替的說(shuō)法,。其實(shí)我慢討厭這個(gè)規(guī)定的,,不過(guò)以前寫(xiě)代碼時(shí)很頭痛的問(wèn)題確實(shí)是在SI界面中的tab鍵對(duì)齊中,,即使設(shè)置好了Tab Width=4,按四個(gè)空格所顯示的縮進(jìn),,和按TAB鍵的縮進(jìn)位置就是不同,,后者要更靠里面三個(gè)字符的位置,但在左下角看到的Col=5都是一樣的,。這樣的代碼在SI里看了不對(duì)齊,,到UE里看了卻是對(duì)齊的。而SI里面看著對(duì)其的代碼,,在UE里面會(huì)差三格,。這就是沒(méi)有設(shè)置上述第二項(xiàng)的原因。 3.1.2 把TAB變成4個(gè)空格 Options-> Document Options里,,選上 Expand Tabs,,并確保 Tab width = 4; 如果需要把已經(jīng)編輯成Tab的文本轉(zhuǎn)換,,先選中所有文本,,"Edit" - "Special Edit" - "Tabs to Spaces"。 這里還有一個(gè)在使用中把TAB鍵編程空格的方法: Options/Document Options頁(yè)面Expand tabs選項(xiàng)選中的話,,則以后按tab時(shí)將轉(zhuǎn)換為空格,。 更改SI使用的windows background背景色為灰色,不傷眼(白色對(duì)眼睛的傷害最大),。 在C程序里,, 如果遇到行末沒(méi)有分號(hào)的語(yǔ)句,如IF,、WHILE,、SWITCH等,寫(xiě)到該行末按回車,,則新行自動(dòng)相對(duì)上一行縮進(jìn)兩列,。 Option->Document option下的Auto Indient中Auto Indient Type有三種類型 None、Simple和Smart,。個(gè)人推薦選用Simple類型,,或者選擇Smart,但不勾選Smart Indent Options中的兩個(gè)可選項(xiàng),。 通常情況下在窗口狀態(tài)欄左下方,,會(huì)顯示當(dāng)前光標(biāo)所在行列信息,但我們可以更徹底點(diǎn): 選擇Options/Document Options頁(yè)面,勾選其中的Show line numbers,,同時(shí)勾選其中的Show right margin,,我們就可顯示一條右邊界,隨時(shí)提醒我們是否該行代碼寫(xiě)得過(guò)長(zhǎng)了,。 1. 恢復(fù)ctrl+a的全選功能 在SI的Options的Key Assignments菜單種,,在Command窗口中通過(guò)關(guān)鍵詞save 找到save all,更改為ctrl+shift+a,,通過(guò)關(guān)鍵詞select找到select all,,更改為ctrl +a; 2. Source Insight常用的快捷鍵: Ctrl+F:本文件內(nèi)查找,; Ctrl+H:替換文本,; F9:左邊縮進(jìn); F10:右邊縮進(jìn),; F3:本文件查找結(jié)果的上一個(gè): F4:本文件查找結(jié)果的下一個(gè),; F5 或者 CTL+G:指定行號(hào),實(shí)現(xiàn)行跳轉(zhuǎn),,在遇到編譯錯(cuò)誤的時(shí)候,,能特別方便的找到出錯(cuò)行; Shift+F8:高亮顯示指定標(biāo)識(shí),,快速瀏覽標(biāo)識(shí)的使用情況,; Ctrl +/ :Look up reference; F7:打開(kāi)Browse Project Symbols窗口,,快速瀏覽工程內(nèi)標(biāo)識(shí)定義,; F8:瀏覽本地語(yǔ)法(彈出該文件語(yǔ)法列表窗口,如果你光標(biāo)放到一個(gè)變量/函數(shù)等,那么列出本文件該變量/函數(shù)等的信息) ; Ctrl+I:插入一行,; Ctrl+K:復(fù)制一行,; Ctrl+U:剪切一行; Home:到行首,; End:到行尾,; Ctrl+Home:到文件頭; Ctrl+End:到文件底部,; Shift+F6:選擇一行,; Shift+F5:選擇一個(gè)單詞; Ctrl+Tab, Ctrl+Shift+Tab:最后一個(gè)窗口,; 我們最常用的一種查找方式是選擇Search/Lookup References或按Ctrl+/組合鍵再或者鼠標(biāo)點(diǎn) R 按鈕,,在彈出的Loopup References窗口進(jìn)行查找操作。 在Search Method中有四種可選的查找方式:Simple String,、Regular Expression,、 Keyword Expression和Look Up Reference,。其中Simple String是最普通的查找方式,可以查找文件中出現(xiàn)的任意字符或字符,,甚至可以查找 _upap || u 這樣的字符串,,但是在工程較大時(shí),查找過(guò)程會(huì)較慢,。 Regular Expression查找方式將在后面講述正則表達(dá)時(shí)會(huì)介紹到,,這里暫時(shí)按下不表。 Keyword Expression和Look Up Reference查找的結(jié)果基本相同,,但是顯示方式略有差異,。這兩種方式都是使用SI預(yù)先建立的數(shù)據(jù)庫(kù),,查找起來(lái)速度相當(dāng)快,。但通常這種速度只對(duì)在查找標(biāo)識(shí)符時(shí)有明顯效果。對(duì)于像函數(shù)名,,變量名等的查找,,強(qiáng)烈建議使用這兩種方式進(jìn)行查找。 選擇Search/Search Files或按Ctrl+Shift+F組合鍵,,在彈出的Search Files窗口進(jìn)行查找操作,。 在File Name框中可以填入文件名或文件夾。注意當(dāng)要查詢的文件夾雙包含子文件夾時(shí),,可以勾選Options中的Include Subdirectiories,,實(shí)現(xiàn)對(duì)各層文件的遞歸搜索。 選擇Search/Search Project,,在彈出的Search Project窗口進(jìn)行查找操作,。操作與Loopup References幾乎完全一致,它們各自保存上次搜索的配置,。 選擇Search/Replace或按Ctrl+H組合鍵,,在彈出的Replace窗口進(jìn)行查找操作。在Search項(xiàng)目里勾選Selection則僅對(duì)當(dāng)前選中的文檔部分進(jìn)行替換,。另外如果勾選了Confirm Replacements則是逐個(gè)確認(rèn)替換,,否則會(huì)同時(shí)替換所有符合替換條件內(nèi)容。若點(diǎn)右邊的Files…按鈕,,可選擇替換多個(gè)文件的內(nèi)容,。 選擇Search/Replace Files或按Ctrl+Shift+H組合鍵,在彈出的Replace Files 窗口進(jìn)行查找操作,。除了增加New框(替換后的內(nèi)容)外,,其余均與Search Files窗口相同,可參照查找部分的說(shuō)明進(jìn)行操作,。 SI的列操作功能比較弱,,但不等于沒(méi)有,。先按下Alt鍵,接著就可用鼠標(biāo)進(jìn)行列選擇,,然后就可以刪除指定的列,。 很多代碼尤其是驅(qū)動(dòng)代碼,當(dāng)中有大量的預(yù)編譯定義,,以實(shí)現(xiàn)對(duì)不同硬件配置的支持,。在閱讀這樣的代碼時(shí)最痛苦的是不能簡(jiǎn)單判斷程序?qū)嶋H執(zhí)行的代碼分枝。大量分枝同時(shí)存在,,常常會(huì)混淆我們的視聽(tīng),。比如對(duì)于下面的代碼: #ifdef DEV1 /* DEV1代碼代碼 */ #else /* 其它設(shè)備執(zhí)行代碼 */ #endif 如果確定我們當(dāng)前分析的是DEV1的執(zhí)行情況,那么可以選擇Edit菜單的Edit Condition 選項(xiàng),,在彈出的Conditional Parsing窗口中把DEV1的值設(shè)置為True,,那么 #ifdef DEV1就等價(jià)于#if 1了,,相當(dāng)注釋掉了#else分枝的代碼,。反之,設(shè)置為Flase時(shí),,則注釋掉#ifdef DEV1分枝的代碼,。 注意:Edit Condition菜單選項(xiàng)必須手動(dòng)添加到 Edit菜單中。 這節(jié)討論的幾個(gè)主題都屬于SI的高級(jí)話題,,很多我自己都沒(méi)有完全搞明白,,但毫無(wú)疑問(wèn)的是:如果搞明白了,將使我們更加得心應(yīng)手地使用SI,。 Source Link是解析日志信息時(shí)非常有用的一個(gè)功能。 總地說(shuō)來(lái),,SourceLink根據(jù)特定的搜索模式,把當(dāng)前文件中滿足模式的行,、鏈接到由該行指定的其他源文件中。 所謂特定的搜索模式,,共有兩種:“File, then line” 和 “Line, then file”,其中前后兩部分依靠正則表達(dá)式的組的概念來(lái)予以分割,。如果當(dāng)前文件具有匹配行,,比如“Error d:tcsrcq5.c 18: Lvalue required in function jsSort”,,那么SourceInsight在該行創(chuàng)建SourceLink,、把該行鏈接到由該行指定的文件中(即d:tcsrcq5.c,第18行),。 1. 創(chuàng)建SourceLink 運(yùn)行Search菜單的Parse Source Links…命令,,在彈出的框中,、選擇搜索模式,、并填入相應(yīng)的正則表達(dá)式串,點(diǎn)OK,,SIS就會(huì)解析當(dāng)前文件,,如果有匹配,就創(chuàng)建SourceLink,。 2. 在解析日志信息時(shí),,使用SourceLink 可以打開(kāi)日志信息,運(yùn)行Parse Source Links命令,,日志中能夠匹配模式的每一行(通常是含有錯(cuò)誤信息的行),、就會(huì)被設(shè)置上一個(gè)SourceLink 3. 在解析自定義命令輸出時(shí),使用SourceLink 首先勾選Custom Command 中的“Parse Links in Output”,,然后選擇特定的搜索模式,最后填入合適的正則表達(dá)式,。這樣,,Source Insight把輸出信息作為當(dāng)前搜索用文件;并且,,如果有匹配行(通常即編譯錯(cuò)誤信息行),,SIS為 該行創(chuàng)建SourceLink、并把每一個(gè)錯(cuò)誤信息中給定的文件(和行號(hào))作為link目的地,,這對(duì)于我們修改源代碼錯(cuò)誤非常有幫助,。 這一節(jié)的那個(gè)我沒(méi)看明白,或許也是個(gè)雞肋,?不過(guò)看SI的幫助手冊(cè)中,,似乎蠻推崇的。 一般來(lái)說(shuō),,普通的單文件替換命令已足以已滿足工作要求,。但SI還提供了 上下文敏感的全局搜索替換功能------智能重命名。 在Edit菜單中選Smart Rename或按Ctrl+’ 組合鍵,,即可彈出Smart Rename窗口,。它有很強(qiáng)大的功能,但最便捷的使用方式是更改函數(shù)內(nèi)局部變量的名字,,操作只作用于函數(shù)內(nèi)部,,速度非??臁?/p> SourceInsight的搜索索引(search index)使得搜索過(guò)程進(jìn)行地非???。而且,使用Smart Rename所做的替換會(huì)被記錄在Search Results窗口中,,每一條替換記錄旁有一個(gè)SourceLink鏈接到替換發(fā)生地文件,。 使用Ctrl+R將彈出Renumber窗口,這個(gè)用于處理數(shù)字順序排列的情況相當(dāng)有效,,比如數(shù)組下標(biāo),。例如現(xiàn)有代碼: array[0] = 1; array[1] = 2; array[2] = 3; 現(xiàn)在要改為 array[0] = 0; array[1] = 1; array[2] = 2; array[3] = 3; 當(dāng)然可以一個(gè)個(gè)修改,但最快的方式是在array[0] = 1;之前添加array[0] = 0;,,然后列選數(shù)組下標(biāo),,使用Renumber功能以 0為起始值重填數(shù)值。 注:我在使用中實(shí)現(xiàn)不了上面這個(gè)例子,。 3.3.4 SI中正則表達(dá)式 由于在查找及替換中,,經(jīng)常會(huì)使用用正則表達(dá)式,這里對(duì)SI的正則表達(dá)式進(jìn)行簡(jiǎn)單介紹,。 正則表達(dá)式通配符總表
關(guān)于正則表達(dá)式,,推薦查看《精通正則表達(dá)式》。 在執(zhí)行替換操作時(shí),,組將大有用武之地,。正則表達(dá)式的各個(gè)部分可以用/(和/)進(jìn)行分隔,分隔得到的每一項(xiàng)就是一個(gè)組,。在進(jìn)行替換時(shí)可通過(guò)組從匹配內(nèi)容中抽取出特定串,。在正則表達(dá)式中每個(gè)組都有一個(gè)編號(hào),自左至右編號(hào)從1開(kāi)始,。 例如:abc/(xyx/)將能匹配 abcxyz ,,此時(shí)組1就包含了 xyz 串。在進(jìn)行替換操作時(shí),,就可以通過(guò)在替換后內(nèi)容框中填入/1來(lái)取出這個(gè)字符串,。推而廣之,可以使用/<number>來(lái)取得組<number>所包含的串,。 例如:當(dāng)設(shè)定把/(abc/)/(xyz/)替換為/2/1的替換規(guī)則時(shí),,對(duì)于 abcxyz 被替換串,則組1包含 abc,,組2包含 xyz,,而替換后的內(nèi)容定義為組2內(nèi)容后跟組1內(nèi)容(/2/1),因此將得到 xyzabc,。 4 Quicker宏在SI中的使用Marco是sourceinsight軟件一個(gè)強(qiáng)大的功能(個(gè)人認(rèn)為是最強(qiáng)大且有趣的功能),用戶可以通過(guò)編寫(xiě)宏來(lái)實(shí)現(xiàn)自定義功能。這里有個(gè)比較流行的宏文件quicker.em,,該宏文件提供的功能比較全,能滿足開(kāi)發(fā)的一般需求,。通過(guò)該宏,我們可以實(shí)現(xiàn) 自動(dòng)生成注釋,、自動(dòng)生成.c對(duì)應(yīng)的頭文件等一大堆功能,,提高開(kāi)發(fā)效率。 順道提下該宏的來(lái)源:該文件是華為的lushengwen(盧勝文,,工號(hào)2萬(wàn)多)于2002年進(jìn)行整理和開(kāi)發(fā)的,。后來(lái)該高手在2003年華三成立時(shí)劃到了華三公司,不知道現(xiàn)在還在不在華三,。呵呵,。 所有Quicker.em定義的功能都可以在SI的Options工具菜單的Key Assignments對(duì)話框里通過(guò)macro關(guān)鍵字找到。 4.1 如何配置 Quicker 宏 具體搭建步驟請(qǐng)參考 2.1節(jié),。 對(duì)于宏FormatLine,、UpdateFunctionList、InsertTraceInfo,、InsertFuncName,、ReplaceBufTab、ReplaceTabInProj和ComentCPPtoC等功能,,可以根據(jù)情況定義為菜單或熱鍵,。 Quicker有兩種命令,一種是擴(kuò)展命令,,一種是普通命令: 2 擴(kuò)展命令:在代碼文件中輸入命令名,然后按前面AutoExpand宏所定義的熱鍵來(lái)執(zhí)行該命令,; 2 普通命令:直接根據(jù)定義的熱鍵或菜單來(lái)執(zhí)行,; 目前一般的擴(kuò)展命令都對(duì)應(yīng)有相應(yīng)的普通命令。 4.2 幾個(gè)常用的 Quicker 宏 完整的Quicker宏說(shuō)明請(qǐng)參考《quicker.doc》,,這里列出些個(gè)人覺(jué)得比較常用的Quicker宏,。 4.2.1 標(biāo)準(zhǔn)說(shuō)明生成 4.2.1.1 config (co) 配置用戶名和標(biāo)題的說(shuō)明語(yǔ)種 用戶名就是前面自動(dòng)生成的作者,修改者的名字,,語(yǔ)種,,就是前面提到的文件頭說(shuō)明和函數(shù)頭說(shuō)明所采用的的語(yǔ)言有中文和英文兩種選擇 4.2.1.2 file (fi) 生成標(biāo)準(zhǔn)的文件頭 自動(dòng)生成如下格式,它能自動(dòng)取得文件名,,作者名,,時(shí)間,以及函數(shù)列表,,而且在生成的過(guò)程中會(huì)主動(dòng)彈出功能描述能的內(nèi)容輸入對(duì)話框(提示對(duì)話框只能輸入256個(gè)字符),,輸入的內(nèi)容能夠自動(dòng)換行對(duì)齊,,這樣既可以避免遺漏說(shuō)明,而且一般在詳細(xì)設(shè)計(jì)中對(duì)每個(gè)文件的主要功能都有詳細(xì)的描述,,只要把這些描述 拷貝過(guò)來(lái)即可,,它能自動(dòng)排列好, 非常方便,。 4.2.1.3 func (fu) 生成標(biāo)準(zhǔn)的函數(shù)頭說(shuō)明 其自動(dòng)生成函數(shù)頭,,該函數(shù)必須在該函數(shù)的前一行執(zhí)行,它能自動(dòng)取得函數(shù)名,,能夠自動(dòng)取得函數(shù)的輸入,、輸出參數(shù),并且排列好,。能夠 提示輸入功能描述,,輸入的內(nèi)容能夠自動(dòng)換行對(duì)齊,這樣既可以避免遺漏說(shuō)明,,而且一般在詳細(xì)設(shè)計(jì)中對(duì)每個(gè)函數(shù)的主要功能都有詳細(xì)的描述,,只要把這些描述 拷貝過(guò)來(lái)即可,它能自動(dòng)排列好,, 非常方便,。 (因?yàn)镾I的宏功能有限,沒(méi)能自動(dòng)加入調(diào)用函數(shù)和被調(diào)函數(shù)的功能) 如果不是在已存在的函數(shù)前執(zhí)行則提示輸入函數(shù)名,,提示輸入函數(shù)描述,,提示輸入返回值類型,提示輸入函數(shù)入口參數(shù),,輸完后按Esc退出 4.2.1.4 hi 增加修改歷史列表 自動(dòng)在該行增加修改歷史列表,,用于文件頭和函數(shù)頭說(shuō)明中的歷史記錄更新。 注意:該功能不能在文件最后一行輸入,。 4.2.1.5 hd 自動(dòng)生成函數(shù)頭文件 該命令能夠自動(dòng)生成但前C文件的頭文件定義,,包括常用的宏定義,還有全部的函數(shù)原型定義,。 4.2.1.6 Hdn 生成新的有文件 該命令能夠自動(dòng)生成指定的的頭文件定義,,包括常用的宏定義,提示輸入函數(shù)原型的類型,。 4.2.2.1 pn 添加問(wèn)題單號(hào) 在進(jìn)行問(wèn)題單修改時(shí)都要求在修改的地方注明問(wèn)題單號(hào)和修改人以及修改時(shí)間,,大部分一個(gè)問(wèn)題單的修改都會(huì)涉及到幾個(gè)地方,本功能提供自動(dòng)取問(wèn)題單號(hào)的功能,,下面的幾個(gè)命令所生成的問(wèn)題單號(hào)就是由它提供,,如果輸入為#則不顯示問(wèn)題單號(hào) 4.2.2.2 ap 添加問(wèn)題單修改說(shuō)明 該命令提示輸入問(wèn)題單號(hào)和修改原因,生成如下格式的說(shuō)明 4.2.2.3 ab 添加開(kāi)始說(shuō)明 它能自動(dòng)生成如下說(shuō)明: 1.有問(wèn)題單號(hào)的情況,其中問(wèn)題單號(hào)是由ap命令加入的,。 /*BEGIN: Added by lushengwen, 2002/5/13 問(wèn)題單號(hào):D02556*/ 2.沒(méi)有問(wèn)題單號(hào)的情況,, /*BEGIN: Added by lushengwen, 2002/5/13*/ 4.2.2.4 ae 添加結(jié)束命令 該命令是as的對(duì)應(yīng)命令,表示結(jié)束添加 支持塊命令操作 4.2.2.5 abg 插入添加開(kāi)始和結(jié)束說(shuō)明 該命令是前兩個(gè)命令的組合 支持塊命令操作 4.2.2.6 db 刪除開(kāi)始命令 它能自動(dòng)生成如下說(shuō)明: 1.有問(wèn)題單號(hào)的情況,,其中問(wèn)題單號(hào)是由ap命令加入的,。 /*BEGIN: Deleted by lushengwen, 2002/5/13 問(wèn)題單號(hào):D02556*/ 2.沒(méi)有問(wèn)題單號(hào)的情況, /*BEGIN: Deleted by lushengwen, 2002/5/13 */ 4.2.2.7 de 刪除結(jié)束命令 該命令是ds的對(duì)應(yīng)命令,,表示刪除結(jié)束 4.2.2.8 dbg 插入刪除開(kāi)始和結(jié)束說(shuō)明 該命令是前兩個(gè)命令的組合 支持塊命令操作 4.2.2.9 mb 修改開(kāi)始命令 它能自動(dòng)生成如下說(shuō)明: 1.有問(wèn)題單號(hào)的情況,,其中問(wèn)題單號(hào)是由ap命令加入的。 /*BEGIN: Modified by lushengwen, 2002/5/13 問(wèn)題單號(hào):D02556*/ 2.沒(méi)有問(wèn)題單號(hào)的情況,, /*BEGIN: Modified by lushengwen, 2002/5/13 */ 4.2.2.10 me 修改結(jié)束命令 該命令是ms的對(duì)應(yīng)命令,,表示刪除結(jié)束 4.2.2.11 mbg 插入修改開(kāi)始和結(jié)束說(shuō)明 該命令是前兩個(gè)命令的組合 支持塊命令操作 4.2.3.1 將從C++的 // 注釋改為標(biāo)準(zhǔn)的C /* */注釋 ComentCPPtoC() 文件中的//注釋自動(dòng)修改為/* */注釋,因?yàn)楹芏郈編譯器不能很好的處理C++風(fēng)格的 // 注釋,,用該命令可以方便的將選中區(qū)域內(nèi)的//注釋進(jìn)行修改,,建議將該宏定義在菜單中。 4.2.3.2 能自動(dòng)將Tab轉(zhuǎn)換成空格(mstp_out.c) ReplaceBufTab() 自動(dòng)將當(dāng)前文件中的Tab轉(zhuǎn)換成空格 ReplaceTabInProj() 自動(dòng)將工程中的文件中的Tab轉(zhuǎn)換成空格 因?yàn)椴煌木庉嬈鲗?duì)tab的長(zhǎng)度定義不一至,,造成代碼格式紊亂,,編程規(guī)范是不允許用tab鍵的,可以用該宏來(lái)將整個(gè)文件的tab進(jìn)行替換,,非常方便,,建議將該宏定義在菜單中 InsertFuncName() 能自動(dòng)的插入本函數(shù)名,現(xiàn)在的函數(shù)名一般較長(zhǎng),,特別是在調(diào)試打印代碼中為了顯示出出錯(cuò)的函數(shù)經(jīng)常需要輸入本函數(shù)名,,該宏能帶來(lái)極大方便。建議定義為一個(gè)熱鍵 ctrl 1 4.2.3.4 自動(dòng)在函數(shù)入口,、出口插入,、刪除打印函數(shù) 注意使用本功能時(shí)一定要求所有的語(yǔ)句符合公司編程規(guī)范,要求一條語(yǔ)句一行,,因?yàn)楦鞣N編碼情況很復(fù)雜,,特別是老代碼和有大量條件編譯的情況下很難覆蓋各種情況,最好在執(zhí)行完后再檢查一遍,。不推薦使用工程內(nèi)的插入和刪除。 InsertTraceInfo() 能夠自動(dòng)在函數(shù)的出,、入口首尾加入打印代碼,,即在光標(biāo)處加入一個(gè)進(jìn)入函數(shù)的打印,在函數(shù)的返回處加入一個(gè)出函數(shù)的打印,,用于調(diào)試跟蹤時(shí)很方便,,建議定義為熱鍵 Ctrl t; AutoInsertTraceInfoInBuf()能夠在當(dāng)前文件的函數(shù)出入口加入打印信息,,建議定義菜單,; AutoInsertTraceInfoInPrj()能夠在當(dāng)前工程的函數(shù)出入口加入打印信息,,建議定義為菜單; RemoveTraceInfo() 刪除InsertTraceInfo()添加的打印信息,,建議定義為菜單,; RemoveCurBufTraceInfo()刪除文件中全部的InsertTraceInfo()添加的打印信息,建議定義為菜單,; RemovePrjTraceInfo()刪除但前工程中全部的InsertTraceInfo()添加的打印信息,,建議定義為菜單; FormatLine() 能夠自動(dòng)將一行長(zhǎng)的文字分成多行,,并且從第二行開(kāi)始,,起始列為(光標(biāo)所在列-2),該宏是為了彌補(bǔ)因?yàn)閷?duì)話框只能處理256個(gè)字符而編寫(xiě)的,,當(dāng)需要輸入超過(guò)256個(gè)字符的說(shuō)明時(shí),,就可以先把它拷貝到第一行,然后執(zhí)行本宏,,進(jìn)行分行對(duì)齊,。 UpdateFunctionList() 能夠自動(dòng)在光標(biāo)所在行重新生成函數(shù)列表,用于函數(shù)頭說(shuō)明的函數(shù)列表更新,。 DelCompoundStatement()能自動(dòng)刪除復(fù)合語(yǔ)句,,定義熱鍵 Ctrl D 對(duì)于如下語(yǔ)句,如果我想刪除條件 ulCount > 0,,只需將光標(biāo)放在if語(yǔ)句這一行(藍(lán)色行),,執(zhí)行 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; 執(zhí)行結(jié)果 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默認(rèn)快捷鍵匯總 退出程序 : Alt+F4 重畫(huà)屏幕 : Ctrl+Alt+Space 完成語(yǔ)法 : Ctrl+E 復(fù)制一行 : Ctrl+K 恰好復(fù)制該位置右邊的該行的字符 : Ctrl+Shift+K 復(fù)制到剪貼板 : Ctrl+Del 剪切一行 : Ctrl+U 剪切該位置右邊的該行的字符 : Ctrl+; 剪切到剪貼板 : Ctrl+Shift+X 剪切一個(gè)字 : Ctrl+, 左邊縮進(jìn) : F9 右邊縮進(jìn) : F10 插入一行 : Ctrl+I 插入新行 : Ctrl+Enter 加入一行 : Ctrl+J 從剪切板粘貼 : Ctrl+Ins 粘貼一行 : Ctrl+P 重復(fù)上一個(gè)動(dòng)作 : Ctrl+Y 重新編號(hào) : Ctrl+R 重復(fù)輸入 : Ctrl+/ 替換 : Ctrl+H 智能重命名 : Ctrl+' 關(guān)閉文件 : Ctrl+W 關(guān)閉所有文件 : Ctrl+Shift+W 新建 : Ctrl+N 轉(zhuǎn)到下一個(gè)文件 : Ctrl+Shift+N 打開(kāi) : Ctrl+O 重新裝載文件 : Ctrl+Shift+O 另存為 : Ctrl+Shift+S 顯示文件狀態(tài) : Shift+F10 激活語(yǔ)法窗口 : Alt+L 回到該行的開(kāi)始 : Home 回到選擇的開(kāi)始 : Ctrl+Alt+[ 到塊的下面 : Ctrl+Shift+] 到塊的上面 : Ctrl+Shift+[ 書(shū)簽 : CTRL+M 到文件底部 : Ctrl+End、Ctrl+(KeyPad) End 到窗口底部 : (KeyPad) End (小鍵盤的END) 到一行的尾部 : End 到選擇部分的尾部 : Ctrl+Alt+] 到下一個(gè)函數(shù) : 小鍵盤 + 上一個(gè)函數(shù) : 小鍵盤 - 后退 : Alt+,, Thumb 1 Click 后退到索引 : Alt+M 向前 : Alt+., Thumb 2 Click 轉(zhuǎn)到行 : F5, Ctrl+G 轉(zhuǎn)到下一個(gè)修改 : Alt+(KeyPad) + 轉(zhuǎn)到下一個(gè)鏈接 : Shift+F9, Ctrl+Shift+L 回到前一個(gè)修改 : Alt+(KeyPad) - 跳到連接(就是語(yǔ)法串口列表的地方) : Ctrl+L 跳到匹配 : Alt+] 下一頁(yè) : PgDn, (KeyPad) PgDn 上一頁(yè) : PgUp, (KeyPad) PgUp 向上滾動(dòng)半屏 : Ctrl+PgDn, Ctrl+(KeyPad) PgDn, (KeyPad) * 向下滾動(dòng)半屏 : Ctrl+PgUp, Ctrl+(KeyPad) PgUp, (KeyPad) / 左滾 : Alt+Left 向上滾動(dòng)一行 : Alt+Down 向下滾動(dòng)一行 : Alt+Up 右滾 : Alt+Right 選擇一塊 : Ctrl+- 選擇當(dāng)前位置的左邊一個(gè)字符 : Shift+Left 選擇當(dāng)前位置右邊一個(gè)字符 : Shift+Right 選擇一行 : Shift+F6 從當(dāng)前行其開(kāi)始向下選擇 : Shift+Down 從當(dāng)前行其開(kāi)始向上選擇 : Shift+Up 選擇上頁(yè) : Shift+PgDn, Shift+(KeyPad) PgDn 選擇下頁(yè) : Shift+PgUp, Shift+(KeyPad) PgUp 選擇句子(直到遇到一個(gè) . 為止) : Shift+F7, Ctrl+. 從當(dāng)前位置選擇到文件結(jié)束 : Ctrl+Shift+End 從當(dāng)前位置選擇到行結(jié)束 : Shift+End 從當(dāng)前位置選擇到行的開(kāi)始 : Shift+Home 從當(dāng)前位置選擇到文件頂部 : Ctrl+Shift+Home 選擇一個(gè)單詞 : Shift+F5 選擇左邊單詞 : Ctrl+Shift+Left 選擇右邊單詞 : Ctrl+Shift+Right 到文件頂部 : Ctrl+Home, Ctrl+(KeyPad) Home 到窗口頂部 : (KeyPad) Home 到單詞左邊(也就是到一個(gè)單詞的開(kāi)始) : Ctrl+Left 到單詞右邊(到該單詞的結(jié)束) : Ctrl+Right 排列語(yǔ)法窗口(有三種排列方式分別按1,2,3次) : Alt+F7 移除文件 : Alt+Shift+R 同步文件 : Alt+Shift+S 增量搜索(當(dāng)用Ctrl + F 搜索,然后按F12就會(huì)轉(zhuǎn)到下一個(gè)匹配) : F12 替換文本 : Ctrl+Shift+H 向后搜索 : F3 在多個(gè)文件中搜索 : Ctrl+Shift+F 向前搜索 : F4 搜索選擇的(比如選擇了一個(gè)單詞,shift+F4將搜索下一個(gè)) : Shift+F4 搜索 : Ctrl+F 瀏覽本地語(yǔ)法(彈出該文件語(yǔ)法列表窗口,如果你光標(biāo)放到一個(gè)變量/函數(shù)等,那么列出本文件該變量/函數(shù)等的信息) : F8 瀏覽工程語(yǔ)法 : F7, Alt+G 跳到基本類型(即跳到原型) : Alt+0 跳到定義出(也就是聲明) : Ctrl+=, Ctrl+L Click (select), Ctrl+Double L Click 檢查引用 : Ctrl+/ 語(yǔ)法信息(彈出該語(yǔ)法的信息) : Alt+/, Ctrl+R Click (select) 高亮當(dāng)前單詞 : Shift+F8 語(yǔ)法窗口(隱藏/顯示語(yǔ)法窗口) : Alt+F8 關(guān)閉窗口 : Alt+F6, Ctrl+F4 最后一個(gè)窗口 : Ctrl+Tab, Ctrl+Shift+Tab 套用下參考文獻(xiàn)1中的說(shuō)法:人各有志,!個(gè)人興趣不同,,推薦大家可以在 2.1 節(jié)基礎(chǔ)上進(jìn)行修改。 6 參考文獻(xiàn)1. Source Insight 的實(shí)用技巧: http://blog.csdn.net/Jupin/archive/2007/10/19/1832536.aspx 2. SI的幫助文件 3. 谷俊奇:quicker.doc,、Quicker.em 7 聯(lián)系方式若您發(fā)現(xiàn)任何問(wèn)題或有任何更好的建議,,歡迎與我聯(lián)系! 溫陵布衣: MSN: [email protected] Mail: [email protected] QQ: 526679213 |
|
來(lái)自: t涂鴉 > 《smart programmer》