轉自:https://www.veryarm.com/140428.htmlhtml
雖然不能以貌取人,但彷佛曆來沒有人責備以貌取軟件的。SI的華麗界面,絕對符合現代
花花世界的人的審美趣味。在SI中,咱們能夠輕鬆地把各類類型關鍵字、變量、標誌符、函數、宏、註釋等定義爲不一樣的顏色和顯示方式(正體或斜體、加粗或正
常、加下劃線、放大顯示等),總有一種方式能讓咱們一眼就能分辨出這個標識是什麼。正則表達式
在SI中樣式是能夠被繼承,若是要從根本上改變字體,最簡單的方式就是直接修改根樣式中的字體,
由於其它樣式都會由此繼承而來。選擇Options/Document Options頁面內的Font Options中的Screen
Fonts字體,便可改變根樣式中的字體。SI中的默認配置爲Verdana字體,是一種非等寬字體,爲了使編寫的代碼在各類編輯器中看起來都有良好的對
齊效果,這裏強烈建議使用等寬字體,Courier、New Courier和宋體等都是較好的選擇。數據庫
畢竟這是見仁見智的東西,因此歷來沒有統一的標準。不少人並不喜歡SI提供的默認配置,那麼咱們
就改吧。選擇Options/Style Properties頁面,就能夠在其中修改全部樣式了。選擇等號(=)表示繼承Parent
Style,也能夠選擇Pick(或者ON/OFF等)去配置一個新值。這徹底視乎我的喜愛。apache
在與 顏色定義 一節一樣的界面內便可完成此項配置。編程
在但願要改變背景色的窗口點擊鼠標右鍵(假定使用的是右手鼠標),選擇上下文菜單的 xxx
Window Properties項,而後點擊彈出窗口的Back
Color按鈕,便可修改該窗口背景色。對於SI的源碼主窗口,只需選擇上下文菜單的Special Window Color項便可完成背景色修改。數組
我始終認爲最容易得到認同的是關於這個選項的配置了。選擇
Options/Document Options頁面,點擊其內的Auto Indent按鈕,在彈出的Auto
Indenting窗口中,默認配置爲 Auto Indent Type選擇Smart,且勾選了Smart Indent
Options中的兩個可選項,這樣獲得的默認縮進效果爲編程語言
while (1) { I }
每次都要手工去調整其縮進,其實只要把兩個勾選項去掉,就能夠獲得編輯器
while (1) { I }
何樂而不爲呢?函數
一般狀況下在窗口狀態欄左下方,最會顯示當前光標所在行列信息,但我總以爲不夠明顯,因而一般咱們做以下配置:
選擇Options/Document Options頁面,勾選其中的Show line numbers。同時勾選其中的Show right margin,咱們就可顯示一條右邊界,隨時提醒咱們是否該行代碼寫得過長了。oop
默認狀況下,SI已經定義了不少很是實用的快捷鍵:
選擇Options/Key Assignments,在彈出的Key Assignments窗口中可自由添加本身喜歡的快捷鍵。比較值得推薦的有以下幾個快捷鍵定義:
若是你正好對SI的Marco語言(下文將會介紹)有研究,那麼還能夠定義更多有用的快捷鍵,好比添加文件頭、函數頭、註釋等(下文在介紹Marco語言時會介紹如何實現)。
在SI中支持多種查找及替換方式,除了上文提到的文件內查找外,還支持工程範圍內查找、目錄查找、指定多文件查找等等。
雖然開篇時就說過,SI的列操做功能比較弱,但不等於沒有。先按下Alt鍵,接着就可用鼠標進行列選擇,而後就能夠刪除指定的列。
這裏介紹一些小技巧,大多數狀況下咱們能夠無視它們的存在。但若是咱們知道這些,某些時候,會有效提升工做效率。
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爲起始值重填數值。
#ifdef DEV1 /* DEV1代碼代碼 */ #else /* 其它設備執行代碼 */ #endif
若是肯定咱們當前分析的是DEV1的執行狀況 5,那麼能夠選擇上下文件菜單的Edit Condition 選項,在彈出的Conditional Parsing窗口中把DEV1的值設置爲True,那麼 #ifdef DEV1就等價於#if 1了,至關注釋掉了#else分枝的代碼。反之,設置爲Flase時,則註釋掉#ifdef DEV1分枝的代碼。
因爲在查找及替換中,常常會使用用正則表達式6,這裏對SI的正則表達式進行簡單介紹。
正則表達式通配符總表:
Character | Matches |
^ (在表達式開始處) | 行的開始部分 |
. | 任意單個字符 |
[abc] | 任意屬於集合 abc 的單個字符 |
[^abc] | 任意不屬於集合 abc 的單個字符 |
* | 前面字符的0個或多個重複 |
+ | 前面字符的1個或多個重複 |
t | 一個 tab 字符 |
s | 一個空格符 |
w | 一個空白符(包括 tab 符和空格符) |
$ | 行的結束部分 |
在執行替換操做時,組將大有用武之地。正則表達式的各個部分能夠用(和)進行分隔,分隔獲得的每一項就是一個組。在進行替換時可經過組從匹配內容中抽取出特定串。在正則表達式中每一個組都有一個編號,自左至右編號從1開始。
例如:abc(xyx)將能匹配 abcxyz ,此時組1就包含了 xyz 串。在進行替換操做時,就能夠經過在替換後內容框中填入1來取出這個字符串。推而廣之,可使用<number>來取得組<number>所包含的串。
例如:當設定把(abc)(xyz)替換爲21的替換規則時,對於 abcxyz 被替換串,則組1包含 abc,組2包含 xyz,而替換後的內容定義爲組2內容後跟組1內容(21),所以將獲得 xyzabc。
舉個真實的使用例子,相信會增長你們的興趣。有時爲方便調試,代碼中處處流浪着各類形式的mytrace調用
mytrace("Create parameter list... ");
有時但願把它們所有註釋掉,而有些時候又但願把它們所有恢復回來。這是個簡單的例子,可使用
^(.*)(/*)(.*mytrace.*)(*/)___FCKpd___6nbsp;==> 13
把它們恢復回來,而使用
^(.*)(mytrace)(.*)___FCKpd___7nbsp;==> 1/*23*/
則完成把它們所有註釋掉。
我始終認爲這是SI中最有趣的部分,這是一種功能強大的編程語言,幾乎能夠實如今編程過程可能使用到的各類功能。
這裏不許備對如何實用宏語言進行編程做介紹(可參閱SI幫助文檔。),只介紹如何使用已編好程序。爲方便使用,我已把這些程序都集中放在utils.em文件中,下文就此文件進行論述。
該宏文件實現了一些在編碼過程當中可能會用到的功能, 如添加文件頭、函數說明(使用時能自動添加文件名、函數名和當前日期)和宏定義,代碼補全等。
使用說明:
推薦使用的宏:InsFileHeader、InsFunHeader、InsHeaderDef、InsIfdef和AutoExpand (爲代碼自動補全功能,建議建快捷鍵)。
關於AutoExpand的舉例說明, 當你輸入了 switch 且光標正處於switch後面,運行該宏則會獲得
switch (###) { case break; default: }
對於InsFunHeader宏,若是有以下函數體
int nOpenConfigFile(char *pchMemConfig, char *pchFlashConfig, int nSize, int nMode) { I }
光標在函數體內時運行該宏,那麼將會在函數體上方獲得
/****************************************************************************** * nOpenConfigFile - * DESCRIPTION:- * * Input: N/A * Output: N/A * Returns: N/A * * modification history * -------------------- * 1.00, Apr 19, 2007, T357 written. * -------------------- ******************************************************************************/
其中的函數名及編寫日期自動按實際狀況填充,T357串可經過修改utils.em文件,改爲你須要的名字。
所謂人各有志,這裏就不說啦。