SourceInsight巨集外掛2(非常好用,強力推薦)
Quicker巨集在SI中的使用方法(下載地址:連結:https://pan.baidu.com/s/1VrDxlPhft7RPUCCOKxsGIg 提取碼:2d4u)
Quicker巨集的新增到SI中配置方法:
1. 執行SI,開啟Base工程,如果沒有該工程,則生成它,將Quicker.em加入到工程中
2. 安裝觸發熱鍵和選單,開啟SI的Options的Key Assignments選單,在Command視窗中選擇Macro: AutoExpand然後對其賦一個熱鍵,例如Ctrl Enter
3. 對於巨集FormatLine,UpdateFunctionList,InsertTraceInfo,InsertFuncName,ReplaceBufTab,ReplaceTabInProj,ComentCPPtoC等功能,可以根據情況定義為選單或熱鍵
4. 選擇Options的Save Configuration先儲存自己的配置,以便回退,回退時選擇Options的Load Configuration來裝載該配置.
5. Quicker有兩種命令,一種是擴充套件命令,一種是普通命令。
擴充套件命令:在程式碼檔案中輸入命令名,然後按前面AutoExpand巨集所定義的熱鍵(Ctrl Enter)來執行該命令通命令:直接根據定義的熱鍵或選單來執行,目前一般的擴充套件命令都對應有相應的普通命令
Quicker巨集在SI中的使用方法:
1 標準C語言擴充套件
1.1 /* 自動生成/* */ 該命令自動生成C語言的註釋,它能自動換行對齊,在把文件中一長串註釋拷貝過來時特別管用,不用自己去對齊了。還能自動識別中文和英文單詞,對於中文不會把一個字分開,對於英文單詞分開時會自動新增連字元,下面是一個註釋的例子abcdefghijk = abcd + cdefg + hijk /*該命令自動生成C語言的註釋,它能自動換行對齊,在把文件中一長串註釋拷貝過來時特別管用,不用自己去對齊了。*/
1.2 { 自動生成 }
1.3 while (wh) 自動生成While語句
while ( # ) { # }
1.4 if 自動生成if語句
if 生成if結構的語句 ife 對應生成if else結構的語句 ifs 對應生成if elseif else結構的f語句 if ( # ) { # }
1.5 for 自動生成for語句,支援塊命令插入
該命令自動生成如下格式
for ( #; #; # ) { # }
1.5.1 fo 自動生成for語句與前一條命令相比它直接會定義迴圈變數
UINT32 ulI = 0; for ( ulI = 0; ulI < #; ulI++ ) { # }
1.6 do 自動生成 do while語句
該命令自動生成如下格式
do { # } while ( # );
1.7 #ifd 自動生成 #ifdef 命令
該命令生成如下格式
#ifdef UMSC #endif /* UMSC */
1.8 #ifn 自動生成 #ifndef 命令
該命令生成如下格式
#ifndef UMSC #endif /* UMSC */
1.9 #if 自動生成 #if 命令
該命令生成如下格式
#if ( UMSC == 1) #endif /*if ( UMSC == 1) */
1.10 cpp 自動生成適用於c++的c原型說明定義
該命令生成如下格式
#ifdef __cplusplus #if __cplusplus extern "C"{ #endif #endif /* __cplusplus */ #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */
1.11 switch (sw) 自動生成switch語句
該命令將提示輸入case的個數,生成如下格式
switch ( # ) { case #: # break; default: # }
1.12 case (ca)自動生成case語句
支援塊命令輸入
該命令生成如下格式,用它可以避免遺漏break
case #: # break;
1.13 struct (st) 自動生成結構型別
該命令自動生成如下結構定義,它提示輸入結構名,會自動轉換成大寫形式,並且自動在其後新增_STRU作為結構型別
typedef struct HELLO_TEST { # }HELLO_TEST_STRU;
1.14 enum (en) 自動生成列舉型別
該命令自動生成如下結構定義,它提示輸入結構名,會自動轉換成大寫形式,並且自動在其後新增_STRU作為結構型別
typedef enum HELLO_TEST { # }HELLO_TEST_ENUM;
2 標準說明生成
2.1 config (co) 配置使用者名稱和標題的說明語種
使用者名稱就是前面自動生成的作者,修改者的名字,語種。
2.2 file (fi) 生成標準的檔案頭
自動生成如下格式,它能自動取得檔名,作者名,時間,以及函式列表。
2.3 func (fu) 生成標準的函式頭說明
其自動生成如下函式頭,該函式必須在該函式的前一行執行,它能自動取得函式名,能夠自動取得函式的輸入、輸出引數,並且排列好,同時生成日期和作者。能夠 提示輸入功能描述,輸入的內容能夠自動換行對齊,這樣既可以避免遺漏說明,而且一般在詳細設計中對每個函式的主要功能都有詳細的描述,只要把這些描述 拷貝過來即可,它能自動排列好, 非常方便。(因為SI的巨集功能有限,沒能自動加入呼叫函式和被調函式的功能),如果不是在已存在的函式前執行則提示輸入函式名,提示輸入函式描述,提示輸入返回值型別,提示輸入函式入口引數,輸完後按Esc退出。
2.4 hi 增加修改歷史列表
自動在該行增加修改歷史列表,用於檔案頭和函式頭說明中的歷史記錄更新,其新增形式如下。
2.5 hd 自動生成函式標頭檔案
該命令能夠自動生成但前C檔案的標頭檔案定義,包括常用的巨集定義,還有全部的函式原型定義。
2.6 Hdn 生成新的有檔案
該命令能夠自動生成指定的的標頭檔案定義,包括常用的巨集定義,提示輸入函式原型的型別。
3 程式碼修改註釋
3.1 pn 新增問題單號
在進行問題單修改時都要求在修改的地方註明問題單號和修改人以及修改時間,大部分一個問題單的修改都會涉及到幾個地方,本功能提供自動取問題單號的功能,下面的幾個命令所生成的問題單號就是有它提供,如果輸入為#則不顯示問題單號
3.2 ap 新增問題單修改說明
該命令提示輸入問題單號和修改原因,生成如下格式的說明
3.3 ab 新增開始說明
它能自動生成如下說明:
1.有問題單號的情況,其中問題單號是由ap命令加入的。
/*BEGIN: Added by XXXX, 2002/5/13 問題單號:D02556*/
2.沒有問題單號的情況,
/*BEGIN: Added by XXXX, 2002/5/13*/
3.4 ae 新增結束命令
該命令是as的對應命令,表示結束新增
支援塊命令操作
3.5 abg 插入新增開始和結束說明
該命令是前兩個命令的組合
支援塊命令操作
3.6 db 刪除開始命令
它能自動生成如下說明:
1.有問題單號的情況,其中問題單號是由ap命令加入的。
/*BEGIN: Deleted by XXXX, 2002/5/13 問題單號:D02556*/
2.沒有問題單號的情況,
/*BEGIN: Deleted by XXXX, 2002/5/13 */
3.7 de 刪除結束命令
該命令是ds的對應命令,表示刪除結束
3.8 dbg 插入刪除開始和結束說明
該命令是前兩個命令的組合
支援塊命令操作
3.9 mb 修改開始命令
它能自動生成如下說明:
1.有問題單號的情況,其中問題單號是由ap命令加入的。
/*BEGIN: Modified by XXXX, 2002/5/13 問題單號:D02556*/
2.沒有問題單號的情況,
/*BEGIN: Modified by XXXX, 2002/5/13 */
3.10 me 修改結束命令
該命令是ms的對應命令,表示刪除結束
3.11 mbg 插入修改開始和結束說明
該命令是前兩個命令的組合
支援塊命令操作
Quicker.em原始碼(下載地址 連結:https://pan.baidu.com/s/1tUn5vTbnOtY-tlT9lilL5w 提取碼:nlwg)
/***************************************************************************** 函 數 名 : AutoExpand 功能描述 : 擴充套件命令入口函式 輸出引數 : 無 返 回 值 : 呼叫函式 : 被調函式 : 修改歷史 : 1.日 期 : 2008年6月18日 作 者 : 張強 修改內容 : 修改 *****************************************************************************/ macro AutoExpand() //Alt+~ { //配置資訊 // get window, sel, and buffer handles hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) if(sel.lnFirst != sel.lnLast) { /*塊命令處理*/ BlockCommandProc() } if (sel.ichFirst == 0) stop hbuf = GetWndBuf(hwnd) language = getreg(LANGUAGE) if(language != 1) { language = 0 } nVer = 0 nVer = GetVersion() /*取得使用者名稱*/ szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } // get line the selection (insertion point) is on szLine = GetBufLine(hbuf, sel.lnFirst); // parse word just to the left of the insertion point wordinfo = GetWordLeftOfIch(sel.ichFirst, szLine) ln = sel.lnFirst; chTab = CharFromAscii(9) // prepare a new indented blank line to be inserted. // keep white space on left and add a tab to indent. // this preserves the indentation level. chSpace = CharFromAscii(32); ich = 0 while (szLine[ich] == chSpace || szLine[ich] == chTab) { ich = ich + 1 } szLine1 = strmid(szLine,0,ich) szLine = strmid(szLine, 0, ich) # " " sel.lnFirst = sel.lnLast sel.ichFirst = wordinfo.ich sel.ichLim = wordinfo.ich /*自動完成簡化命令的匹配顯示*/ wordinfo.szWord = RestoreCommand(hbuf,wordinfo.szWord) sel = GetWndSel(hwnd) if (wordinfo.szWord == "pn") /*問題單號的處理*/ { DelBufLine(hbuf, ln) AddPromblemNo() return } /*配置命令執行*/ else if (wordinfo.szWord == "config" || wordinfo.szWord == "co") { DelBufLine(hbuf, ln) ConfigureSystem() return } /*修改歷史記錄更新*/ else if (wordinfo.szWord == "hi") { InsertHistory(hbuf,ln+1,language) DelBufLine(hbuf, ln) return } else if (wordinfo.szWord == "abg") { sel.ichFirst = sel.ichFirst - 3 SetWndSel(hwnd,sel) InsertReviseAdd() PutBufLine(hbuf, ln+1 ,szLine1) SetBufIns(hwnd,ln+1,sel.ichFirst) return } else if (wordinfo.szWord == "dbg") { sel.ichFirst = sel.ichFirst - 3 SetWndSel(hwnd,sel) InsertReviseDel() PutBufLine(hbuf, ln+1 ,szLine1) SetBufIns(hwnd,ln+1,sel.ichFirst) return } else if (wordinfo.szWord == "mbg") { sel.ichFirst = sel.ichFirst - 3 SetWndSel(hwnd,sel) InsertReviseMod() PutBufLine(hbuf, ln+1 ,szLine1) SetBufIns(hwnd,ln+1,sel.ichFirst) return } if(language == 1) { ExpandProcEN(szMyName,wordinfo,szLine,szLine1,nVer,ln,sel) } else { ExpandProcCN(szMyName,wordinfo,szLine,szLine1,nVer,ln,sel) } } /***************************************************************************** 函 數 名 : ExpandProcEN 功能描述 : 英文說明的擴充套件命令處理 輸入引數 : szMyName 使用者名稱 wordinfo szLine szLine1 nVer ln sel 輸出引數 : 無 返 回 值 : 呼叫函式 : 被調函式 : 修改歷史 : 1.日 期 : 2008年6月19日 作 者 : 張強 修改內容 : 新生成函式 2.日 期 : 2011年2月16日 作 者 : 彭軍 修改內容 : 修改問題單號為mantis號,修改時間格式為xxxxxxxx(年、月、日), 中間沒有分隔符,增加單行註釋,自動擴充套件碼為"an" 3.日 期 : 2011年2月22日 作 者 : 彭軍 修改內容 : 修改單行註釋頭為add by、delete by、modify by,自動擴充套件碼分別為"as"、"ds"、"ms" 修改單行註釋為游標所在行的最後,不刪除游標所在行 刪除原自動擴充套件碼為"an"的單行註釋 *****************************************************************************/ macro ExpandProcEN(szMyName,wordinfo,szLine,szLine1,nVer,ln,sel) { szCmd = wordinfo.szWord hwnd = GetCurrentWnd() if (hwnd == 0) stop hbuf = GetWndBuf(hwnd) /*英文註釋*/ if (szCmd == "/*") { if(wordinfo.ichLim > 70) { Msg("The right margine is small, Please use a new line") stop } szCurLine = GetBufLine(hbuf, sel.lnFirst); szLeft = strmid(szCurLine,0,wordinfo.ichLim) lineLen = strlen(szCurLine) kk = 0 while(wordinfo.ichLim + kk < lineLen) { if((szCurLine[wordinfo.ichLim + kk] != " ")||(szCurLine[wordinfo.ichLim + kk] != "\t") { msg("you must insert /* at the end of a line"); return } kk = kk + 1 } szContent = Ask("Please input comment") DelBufLine(hbuf, ln) szLeft = cat( szLeft, " ") CommentContent(hbuf,ln,szLeft,szContent,1) return } else if(szCmd == "{") { InsBufLine(hbuf, ln + 1, "@[email protected]") InsBufLine(hbuf, ln + 2, "@[email protected]" # "}"); SetBufIns (hbuf, ln + 1, strlen(szLine)) return } else if (szCmd == "while" ) { SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 2, "@[email protected]" # "#"); InsBufLine(hbuf, ln + 3, "@[email protected]" # "}"); } else if( szCmd == "else" ) { InsBufLine(hbuf, ln + 1, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 2, "@[email protected]"); InsBufLine(hbuf, ln + 3, "@[email protected]" # "}"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "#ifd" || szCmd == "#ifdef") //#ifdef { DelBufLine(hbuf, ln) InsIfdef() return } else if (szCmd == "#ifn" || szCmd == "#ifndef") //#ifndef { DelBufLine(hbuf, ln) InsIfndef() return } else if (szCmd == "#if") { DelBufLine(hbuf, ln) InsertPredefIf() return } else if (szCmd == "cpp") { DelBufLine(hbuf, ln) InsertCPP(hbuf,ln) return } else if (szCmd == "if") { SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 2, "@[email protected]" # "#"); InsBufLine(hbuf, ln + 3, "@[email protected]" # "}"); /* InsBufLine(hbuf, ln + 4, "@[email protected]" # "else"); InsBufLine(hbuf, ln + 5, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 6, "@[email protected]" # ";"); InsBufLine(hbuf, ln + 7, "@[email protected]" # "}");*/ } else if (szCmd == "ef") { PutBufLine(hbuf, ln, szLine1 # "else if ( # )") InsBufLine(hbuf, ln + 1, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 2, "@[email protected]" # "#"); InsBufLine(hbuf, ln + 3, "@[email protected]" # "}"); } else if (szCmd == "ife") { PutBufLine(hbuf, ln, szLine1 # "if ( # )") InsBufLine(hbuf, ln + 1, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 2, "@[email protected]" # "#"); InsBufLine(hbuf, ln + 3, "@[email protected]" # "}"); InsBufLine(hbuf, ln + 4, "@[email protected]" # "else"); InsBufLine(hbuf, ln + 5, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 6, "@[email protected]" # ";"); InsBufLine(hbuf, ln + 7, "@[email protected]" # "}"); } else if (szCmd == "ifs") { PutBufLine(hbuf, ln, szLine1 # "if ( # )") InsBufLine(hbuf, ln + 1, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 2, "@[email protected]" # "#"); InsBufLine(hbuf, ln + 3, "@[email protected]" # "}"); InsBufLine(hbuf, ln + 4, "@[email protected]" # "else if ( # )"); InsBufLine(hbuf, ln + 5, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 6, "@[email protected]" # ";"); InsBufLine(hbuf, ln + 7, "@[email protected]" # "}"); InsBufLine(hbuf, ln + 8, "@[email protected]" # "else"); InsBufLine(hbuf, ln + 9, "@[email protected]" # "{"); InsBufLine(hbuf, ln + 10, "@[email protected]" # ";"); InsBufLine(hbuf, ln + 11, "@[email protected]" # "}"); } else if (szCmd == "for") { SetBufSelText(hbuf, " (#; #; #)") InsBufLine(hbuf, ln + 1, "@[email protected]" # "{") InsBufLine(hbuf, ln + 2, "@[email protected]" # "#") InsBufLine(hbuf, ln + 3, "@[email protected]" # "}") SetWndSel(hwnd, sel) SearchForward() szVar = ask("Please input loop variable") newsel = sel newsel.ichLim = GetBufLineLength (hbuf, ln) SetWndSel(hwnd, newsel) SetBufSelText(hbuf, " (@[email protected] = #; @[email protected] #; @[email protected]++)") } else if (szCmd == "fo") { SetBufSelText(hbuf, "r (ulI = 0; ulI < #; ulI++)") InsBufLine(hbuf, ln + 1, "@[email protected]" # "{") InsBufLine(hbuf, ln + 2, "@[email protected]" # "#") InsBufLine(hbuf, ln + 3, "@[email protected]" # "}") symname =GetCurSymbol () symbol = GetSymbolLocation(symname) if(strlen(symbol) > 0) { nIdx = symbol.lnName + 1; while( 1 ) { szCurLine = GetBufLine(hbuf, nIdx); nRet = strstr(szCurLine,"{") if( nRet != 0xffffffff ) { break; } nIdx = nIdx + 1 if(nIdx > symbol.lnLim) { break } } InsBufLine(hbuf, nIdx + 1, " VOS_UINT32 ulI = 0;"); } } else if (szCmd == "switch" ) { nSwitch = ask("Please input the number of case") SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@[email protected]" # "{") InsertMultiCaseProc(hbuf,szLine1,nSwitch) } else if (szCmd == "do") { InsBufLine(hbuf, ln + 1, "@[email protected]" # "{") InsBufLine(hbuf, ln + 2, "@[email protected]" # "#"); InsBufLine(hbuf, ln + 3, "@[email protected]" # "} while ( # );") } else if (szCmd == "case" ) { SetBufSelText(hbuf, " # :") InsBufLine(hbuf, ln + 1, "@[email protected]" # "#") InsBufLine(hbuf, ln + 2, "@[email protected]" # "break;") } else if (szCmd == "struct" || szCmd == "st") { DelBufLine(hbuf, ln) szStructName = toupper(Ask("Please input struct name")) InsBufLine(hbuf, ln, "@[email protected] struct @[email protected]"); InsBufLine(hbuf, ln + 1, "@[email protected]{"); InsBufLine(hbuf, ln + 2, "@[email protected] "); szStructName = cat(szStructName,"_STRU") InsBufLine(hbuf, ln + 3, "@[email protected]}@[email protected];"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "enum" || szCmd == "en") { DelBufLine(hbuf, ln) szStructName = toupper(Ask("Please input enum name")) InsBufLine(hbuf, ln, "@[email protected] enum @[email protected]"); InsBufLine(hbuf, ln + 1, "@[email protected]{"); InsBufLine(hbuf, ln + 2, "@[email protected] "); szStructName = cat(szStructName,"_ENUM") InsBufLine(hbuf, ln + 3, "@[email protected]}@[email protected];"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "file" || szCmd == "fi") { DelBufLine(hbuf, ln) InsertFileHeaderEN( hbuf,0, szMyName,".C file function description" ) return } else if (szCmd == "func" || szCmd == "fu") { DelBufLine(hbuf,ln) lnMax = GetBufLineCount(hbuf) if(ln != lnMax) { szNextLine = GetBufLine(hbuf,ln) if( (strstr(szNextLine,"(") != 0xffffffff) || (nVer != 2)) { symbol = GetCurSymbol() if(strlen(symbol) != 0) { FuncHeadCommentEN(hbuf, ln, symbol, szMyName,0) return } } } szFuncName = Ask("Please input function name") FuncHeadCommentEN(hbuf, ln, szFuncName, szMyName, 1) } else if (szCmd == "tab") { DelBufLine(hbuf, ln) ReplaceBufTab() return } else if (szCmd == "ap") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = AddPromblemNo() InsBufLine(hbuf, ln, "@[email protected]/* Promblem Number: @[email protected] Author:@[email protected], Date:@[email protected]@[email protected]@[email protected] "); szContent = Ask("Description") szLeft = cat(szLine1," Description : "); if(strlen(szLeft) > 70) { Msg("The right margine is small, Please use a new line") stop } ln = CommentContent(hbuf,ln + 1,szLeft,szContent,1) return } else if (szCmd == "hd") { DelBufLine(hbuf, ln) CreateFunctionDef(hbuf,szMyName,1) return } else if (szCmd == "hdn") { DelBufLine(hbuf, ln) /*生成不要檔名的新標頭檔案*/ CreateNewHeaderFile() return } else if (szCmd == "ab") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@[email protected]/* add begin by @[email protected], @[email protected]@[email protected]@[email protected]*/"); } else { InsBufLine(hbuf, ln, "@[email protected]/* add begin by @[email protected], @[email protected]@[email protected]@[email protected]*/"); } return } else if (szCmd == "ae") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } DelBufLine(hbuf, ln) InsBufLine(hbuf, ln, "@[email protected]/* add end by @[email protected], @[email protected]@[email protected]@[email protected] */"); return } else if (szCmd == "db") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion) > 0) { InsBufLine(hbuf, ln, "@[email protected]/* delete begin by @[email protected], @[email protected]@[email protected]@[email protected] */"); } else { InsBufLine(hbuf, ln, "@[email protected]/* delete begin by @[email protected], @[email protected]@[email protected]@[email protected] */"); } return } else if (szCmd == "de") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } DelBufLine(hbuf, ln + 0) InsBufLine(hbuf, ln, "@[email protected]/* delete end by @[email protected], @[email protected]@[email protected]@[email protected] */"); return } else if (szCmd == "mb") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion) > 0) { InsBufLine(hbuf, ln, "@[email protected]/* modify begin by @[email protected], @[email protected]@[email protected]@[email protected] */"); } else { InsBufLine(hbuf, ln, "@[email protected]/* modify begin by @[email protected], @[email protected]@[email protected]@[email protected] */"); } return } else if (szCmd == "me") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } DelBufLine(hbuf, ln) InsBufLine(hbuf, ln, "@[email protected]/* modify end by @[email protected], @[email protected]@[email protected]@[email protected] */"); return } else if (szCmd == "as") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@[email protected]/* add by @[email protected], @[email protected]@[email protected]@[email protected] */"); } else { InsBufLine(hbuf, ln, "@[email protected]/* add by @[email protected], @[email protected]@[email protected]@[email protected] */"); } return } else if (szCmd == "cs")/*新增一個命令cs 用於生成註釋comment by xxx . 該命令被王啟國新增2014-5-4*/ { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "[email protected]@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "[email protected]@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@[email protected]/* comment by @[email protected], @相關推薦
SourceInsight巨集外掛2(非常好用,強力推薦)
Quicker巨集在SI中的使用方法(下載地址:連結:https://pan.baidu.com/s/1VrDxlPhft7RPUCCOKxsGIg 提取碼:2d4u) Quicker巨集的新增到SI中配置方法: 1. 執行SI,開啟Base工程,如果沒有該工程,則生成它,將Quicker.e
SourceInsight巨集外掛3(非常好用,強力推薦)
openfolder.em原始碼:(連結:https://pan.baidu.com/s/1draaimWzCHZ3vLxL--lfiQ 提取碼:zyq4) //使用資源管理器開啟當前檔案所在資料夾,並個高亮選中當前檔案 推薦快捷鍵 ctrl+D macro ToExplorerFold
外掛,非常好用的請求REST的工具restclient,和非常好用的請求http的工具HttpRequester,
firefox外掛,非常棒,有圖有真相, restclient chrome://restclient/content/restclient.html HttpRequester 在firef
一個非常好用的,線上畫圖軟體。開源的線上畫流程圖軟體,超級棒。draw.io
前言 本文的原文連線是: https://blog.csdn.net/freewebsys/article/details/83689187 未經博主允許不得轉載。 博主地址是:http://blog.csdn.net/freewebsys 1,關於draw.io
非常好用的外掛之IntelliJ IDEA lombok外掛的安裝和使用
一、lombok的介紹 lombok是開源的程式碼生成庫,是一款非常實用的小工具,我們在編輯實體類時可以通過lombok註解減少getter、setter等方法的編寫,在更改實體類時只需要修改屬性即可,減少了很多重複程式碼的編寫
推薦一個非常好用的Chrome擴充套件應用,用於美化Json字串
這個Chrome擴充套件應用的名稱叫JSON Viewer Awesome 1.0.6: 安裝之後,在Chrome工具欄會出現一個紫色的小圖示: 然後可以把任意Json字串直接貼到Chrome介面裡: 點Parse JSON, 就可以以樹狀結構顯示結果:
yum升級CURL到最新版本的方法,非常好用
首先,先為你的伺服器獲取最新匹配的源:http://mirror.city-fan.org/ftp/contrib/yum-repo/ # 安裝新版libcurl的yum源rpm -ivh http://mirror.city-fan.org/ftp/contrib/y
給大家推薦一個非常好用的資管分倉軟體——易投資管軟體,資產管理公司的神器!
易投資管軟體是一套非常成熟的分倉軟體系統,不知道大家有沒有用過? 易投資管系統大概包含: 1、客戶開戶推廣管理系統(網站) 2、行情分析系統(客戶端) 3、賬戶監控管理系統(監控) 4、資管櫃檯系統(分倉) 5、財務結算管理系統(財務) 這些足夠滿足我一個資產管理公司的所有需求,而且不用多花一分
java使用replaceAll的正則表示式替換,非常好用
package com.blog.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TEst { public static void main(St
一款非常好用的 Windows 服務開發框架,開源專案Topshelf
Topshelf是一個開發windows服務的比較好的框架之一,以下演示如何開發Topshelf服務。 1、首先開啟你的vs。新建一個TopshelfStudy控制檯程式,如下圖所示: 這是我用vs2017新建的。 2、然後選中你的專案,執行Nuget,可以手工搜尋Topshelf進行安裝,也可
idea 非常好用的外掛
1: Free Mybatis plugin一個蠻好用的mybatis外掛,可以通過dao層的介面直接和mapper.xml標籤id進行對映,點選下圖左邊的前頭就可以跳轉到對應的介面或是xml.這種方式只對生成代理介面有效,對於通過session.select()的全路徑的實
初次體驗PDF.JS,非常好用的pdf前臺包
客戶死活要用IE,IE這破爛仗著他老爹微軟這幾年的影響力,在各大公司佔了瀏覽器的重要職位。 IE就連自己開啟pdf也不會,只能靠外援他爹的盤友adobe,adobe自以為有點料,一開啟就要上頭條,給個iframe讓他穿穿他都不要,直接裸身出鏡,把哥的整個頁面都擋住,靠!!這
respondsToSelector的相關使用(非常好用的方法,一定要了解!!!)
-(BOOL) isKindOfClass: classObj 用來判斷是否是某個類或其子類的例項 -(BOOL) isMemberOfClass: classObj 用來判斷是否是某個類的例項 -(BOOL) respondsToSelector: selector
向大家介紹一款非常好用的ssh工具finalshell,符合我們國人的使用習慣。
FinalShell 是一體化的的伺服器,網路管理軟體,功能強大的開發,運維工具,充分滿足開發,運維需求. 訪問 主要特性: 1.多標籤,批量伺服器管理. 2.支援登入 Ssh 終端和 Windows 遠端桌面. 3.漂亮的平滑字型顯示,內建 158 個 Sh
sublime非常好用的檔案對比外掛--sublimerge
Sublimerge還不是Sublime Text的另一個 diff外掛。事實上,它是最先進,功能最齊全的外掛,將您最喜愛的編輯器變成專業的並排比較和合並工具,具有驚人的功能! 安裝外掛 如果Sublime安裝了Package Control,直接C
CentOS 7 上安裝 Redis3.2.3 並開啟外網訪問(親測好用,轉)
前一段時間寫過一篇codis叢集的文章,寫那篇文章主要是因為當時的專案不支援Redis自身叢集的功能。 而現在最新的專案是需要redis叢集的,這篇文章我們就來介紹下有關redis的安裝與配置。 一、redis原始碼安裝 截至到2016.8.11,redis最新穩定版本為3.2.3.本篇文章我們就以此
Windows非常好用的快捷鍵(一)
快捷鍵 windows快捷鍵 今天娜娜分享幾個電腦使用中非常好用的快捷鍵,看完相信你能更高效的使用電腦。1)開始菜單:【win】這是最簡單的一個快捷鍵了,省去用鼠標點開始菜單了。2)鎖屏:【win】+【L】當你離開電腦時不希望別人使用你的電腦,按下這兩個鍵,想使用電腦就先輸入密碼吧,前提是你的用戶設置
白鷺引擎和layabox哪個好用,哪個技術更成熟 ?
大型項目 明顯 3d遊戲 屬於 as3 制作 理論 web 商業 選擇H5遊戲引擎的思考維度1、開發語言的支持2、2D、3D、VR的支持3、性能4、引擎的應用廣度5、設計理念6、工作流支持力度7、商業化成熟案例8、學習資源與技術支持能力 首先,我們要知道,當前主流的遊戲
PHP非常好用的分頁類
onf pan url pre ++ reg fig cti wal 分頁類: <?php /* * ********************************************* * @類名: page * @參數: $myde_tota
非常好用的CSS clip-path polygon工具
win .com blog cli polygon .cn image too mage http://betravis.github.io/shape-tools/polygon-drawing/ 非常好用的CSS clip-path polygon工具