• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            玩心未泯

            卡爾斯希普拉斯

            C++博客 首頁 新隨筆 聯系 聚合 管理
              19 Posts :: 0 Stories :: 98 Comments :: 0 Trackbacks
                    宏這個概念可能讓我解釋我可能還解釋不清楚,我自己的理解,就是把一組操作集成在一起。以前玩泥巴的時候有alias,后來玩UO可以自己定義動作組合,我想這些都應該算是宏的范圍吧。其實要看它的定義也簡單,幫助一開就出來了,不過懶得查了。

                    VS中的宏功能是我一直沒有用過的,昨天碰巧碰到個事情,要修改一個4萬8千多行的文件,這個超大文件還只是這個project中的最大的一個,還有另外幾個加起來估計也有好幾萬行,而修改的東西其實不多,可以說是很多種替換操作的集合就可以完成的。開始的時候還耐著性子,搜索、拷貝、粘貼、鍵入,不厭其煩,一個多小時也才改了上千行而已,改得手酸,眼花@@,郁悶到極點。 

                    經過這一階段,發現了一些規律,我想到了用宏來幫我解決問題,宏的腳本咱又不會寫,怎么弄呢?嘿,說白了就當一種語言,能難到哪里去?于是就開始動手了,用vs的錄制宏功能,先把一些操作錄一遍,然后看看生成的腳本,用單引號“'”來表示注釋,字符串用引號引起來,字符串中有引號時,多加一個引號來轉義,腳本都是以"ActiveDocument.Selection打頭的,下面舉個簡單的例子:

            Sub AddToDo()
            'DESCRIPTION: Add //TODO at the selected position.

                       ActiveDocument.Selection.StartOfLine
                       ActiveDocument.Selection = "    //ToDo : Add Code Here!"
                       ActiveDocument.Selection.NewLine
                       ActiveDocument.Selection.LineUp dsMove, 1
                       ActiveDocument.Selection.LineDown dsExtend, 1
                       ActiveDocument.Selection.ReplaceText "ToDo", "TODO"
                       ActiveDocument.Selection.LineDown dsMove, 1

            End Sub


                   上面的腳本實現什么功能呢?就是在光標所在行輸入"    //ToDo : Add Code Here!"并輸入換行,然后再選中剛才輸入的一行,并將其中的ToDo替換為TODO,然后再把光標停留在該行注釋的下面一行。

                   LineUp和LineDown就是上移和下移行了,后面可以接dsMove, xx或者dsExtend, xx,其中xx表行數,而dsMove只是移動,dsExtend移動的同時選中(效果等同于按住鼠標左鍵拖幾行或者是按下Shift上下移動幾行)。左右移動幾個字符的話,使用CharLeft和CharRight,dsMove和dsExtend用法相同。
                  ReplaceText就是替換文本了,用雙引號“”引起文本內容,替換前的和要替換成的文本用逗號“,”分隔。
                  StartOfLine就是移動光標到行的開頭,如果是行的首個有效字符,可以在后面加上dsFirstText。對應的行尾是EndOfLine。
                  要在光標處輸入文本,直接用 = 引導要輸入的文本,文本用雙引號“”引起。
                  NewLine表示換行。
                  'DESCRIPTION一行是以注釋的形態存在的,但是卻是有作用的,你在Macro設置中能夠看到后面接的描述信息。

                 基本上掌握了這些語句就能組合出很多功能了,然后再給你的常用的Macro設置快捷鍵,或者是在ToolBar上顯示一個按鈕。咱也就是用了這么些語句實現了48000多行代碼的修改,改完了一看有57000多行了,nndx,還好是有宏幫忙,這要真的是用手改不知道要改到什么時候去,難怪之前作這個工作的女孩子說至少要改5天呢。

                   宏應該還有很多高級的功能,想想以前咱為了實現一些輔助的功能還跑去寫個什么vs的插件什么的,其實好多事情宏就能夠解決問題了。大家可以繼續往深處探索探索,讓宏成為你的好助手。CodeProject上應該有不少高人們寫的比較有用的宏,建議看完本文入門之后就可以去找這些例子來研究了~:P
            posted on 2007-06-29 13:25 SuperPlayeR 閱讀(2842) 評論(2)  編輯 收藏 引用 所屬分類: C/C++

            評論

            # re: 用VS中的宏(Marco)功能來幫助你工作 2007-06-30 10:30 nick
            如果是一些簡單的替換操作. 可以考慮用 regex. 隨便 vc IDE 的 regex 語法有些怪異  回復  更多評論
              

            # re: 用VS中的宏(Marco)功能來幫助你工作 2007-07-01 21:43 sttx
            Don't Repeat Yourself
            或者可以考慮使用一些腳本語言  回復  更多評論
              

            久久精品无码一区二区无码| 久久无码人妻一区二区三区| 99久久国产综合精品网成人影院| 久久精品一区二区三区不卡| 国产精品嫩草影院久久| 中文字幕无码久久人妻| 久久婷婷激情综合色综合俺也去| 99久久精品免费看国产| 精品综合久久久久久98| 精品久久综合1区2区3区激情| 亚洲色大成网站WWW久久九九| 青草影院天堂男人久久| 香蕉久久久久久狠狠色| 久久本道伊人久久| 亚洲精品无码成人片久久| 亚洲国产成人精品女人久久久 | 欧美久久久久久精选9999| 久久永久免费人妻精品下载| 一本久久综合亚洲鲁鲁五月天| 情人伊人久久综合亚洲| 乱亲女H秽乱长久久久| 国产精品美女久久福利网站| 国产一区二区精品久久凹凸| 国产精品久久自在自线观看| 无码伊人66久久大杳蕉网站谷歌| 国产精品成人久久久| 欧美麻豆久久久久久中文| 久久久久女教师免费一区| 香港aa三级久久三级| 久久精品国产亚洲av高清漫画| 亚洲午夜无码AV毛片久久| 久久中文精品无码中文字幕| 久久伊人五月天论坛| 人人狠狠综合久久亚洲高清| 欧美国产成人久久精品| 久久久久久毛片免费看| 免费一级做a爰片久久毛片潮| 思思久久99热免费精品6| 亚洲国产精品综合久久一线| 久久亚洲熟女cc98cm| 一本久久a久久精品亚洲|