EmEditor 是啥?它是一款和UltraEdit、EditPlus類似的文本編輯器。
“KAO!有沒有搞錯,一個文本編輯器有啥好說的?!”
“我已經用慣了UltraEditor和EditPlus,不想再換了,再見!”
我想你肯定會這么說。以前我也用了很久的EditPlus,不過最近卻轉向EmEditor了,因為它確有許多獨到之處。讓我慢慢道來。
令人驚艷的查找顯亮功能
說起來,用文本編輯器偷懶最常用的就是查找和替換功能了。我常常在想,我比民工唯一高級的地方就是我能復制粘貼以及查找替換而民工不能。當然,如果房子也能復制粘貼不知道還是不是現(xiàn)在這個價?查找替換確實挺高級,可是當一個文件里有三、五十個地方需要替換,我們一邊一下一下地按著“替換”按鈕,一邊瞪大眼睛盯著不斷跳動的屏幕,生怕把哪個不該替換的給替換了,完了還要擔心是不是有該替換的沒被替換?唉,程序員的命好苦,眼睛好痛啊……即使這樣,“全部替換”按鈕我也是不敢按的,誰知道這一按下去會有哪些不該替換的被替換了,又有哪些該被替換的卻被漏掉了?一失足成千古恨的說。
如果你嘗試在EmEditor里按“Find Next”按鈕……
看到沒?(那些綠色可不是俺用記號筆故意涂上去的,雖然俺常喜歡這么干),所有匹配查找條件的部分都會被涂成綠色,這樣我們就可以在替換之前先檢查一遍,然后翹起二郎腿,喝一口咖啡,隨手按一下“Replace All”,吼吼,瞬間搞定啦。
小貼士:選菜單“Search > Erase Find Highlight (Alt+F3)”可以暫時關掉顯亮功能。
獨門絕技:強制大寫(小寫)替換
深夜,鴨梨公司。
Clark正坐在電腦前發(fā)呆,一陣清脆的手機鈴聲打破了他的沉思,原來是他那正在讀研的老婆打來的。
Clark:“老婆,論文通過了沒有呀?”
老婆:“論文到是沒啥太大問題,可是老師說我的程序完全不符合.net編碼規(guī)范,讓我全部改過來?墒敲魈炀鸵酱疝q了,這可咋辦呀?”
Clark:“怎么會這樣?你把程序拿過來讓我see 1 see。”
不一會,Clark就看到了他老婆的程序和腫得像水蜜桃似的眼睛。老婆指著程序里的屬性聲明代碼說,喏,就是這里啦:
private long contract_id;
private string contract_number;
private string customer_name;
“老師說符合編碼規(guī)范的代碼要這個樣子才行。”
private long contractId;
private string contractNumber;
private string customerName;
“嗯……這也不難,用正則表達式查找替換一下就行啦!,Clark道。
“我也想過這招,可是用查找和替換最多只能把那個下劃線去掉,并不能把小寫的字母變成大寫的?”老婆大人要急死了。
Clark微微笑道:“別急,面包會有的,小寫也能變成大寫的……”
在老婆大人撲過來之前,Clark以迅雷不及掩耳盜鈴之勢如破竹籃打水的速度打開了EmEditor,輸入查找正則表達式【_(\w)】和替換表達式【\U\1\E】!癨1”表示查找表達式中的第一對“()”里的內容。
然后,按一下“Replace All”按鈕,就搞定了。
小貼士:在“Replace”對話框中的“Find”和“Replace with”文本框的右側各有一個“>”按鈕,點擊它們可以看到一個下拉菜單,列出了許多常用的正則表達式標記,點擊菜單的最后一項“Help on Regular Expressions”可以打開EmEditor所支持的正則表達式幫助文檔。
豐富的插件
不知道從啥時候起,很多正二八經的功能都不放到主程序里了——它們統(tǒng)統(tǒng)變成了插件,害得我安裝了主程序之后還得一個一個地去下載插件。
由于插件實在太多,限于篇幅(其實就是俺比較懶啦),這里僅介紹幾個比較有趣的。
行首/行尾字符串插入
我們有一段VB寫的程序:
OpenIceBoxDoor()
PutElephantIn()
CloseIceBoxDoor()
現(xiàn)在想把它改成C#的(也就是想在每行結尾加上一個分號啦),可以這么做:
右對齊 & 列編輯模式
現(xiàn)在我們又想把上面的那段程序改為VB的了(也就是把行尾的分號去掉),可以這么做:
宏
說實話,我一直不太喜歡用宏,可能是被宏病毒給搞得有些心理障礙了吧。不過有些問題只有用宏來解決才方便。比如想從下面這段代碼中把字段名取出來。
使用“emeditor_perfecta_en.jsee”這個宏,讓它把與正則表達式【Path=\w+】匹配的字符串抽取出來放到一個新的文檔中。我不喜歡宏的另一個原因是不能夠像查找替換那樣可以在執(zhí)行前預覽,所以像這個宏這樣不更改原來的文件內容而是把匹配的內容放到一個新文檔中比較讓人放心。
然后用前面介紹的列編輯模式把前面的“Path=”刪除就行了。
您可能會問為什么不用帶有逆環(huán)視結構的正則表達式【(?<=Path=)\w+】呢?這樣在匹配結果里面就不會包含“Path=”啦。這是因為EmEditor中的宏是使用的JavaScript代碼,而JavaScript里的正則表達式是不支持逆環(huán)視結構的
JavaScript里的正則表達式可以參考http://www.ijavascript.cn/shouce/javascript-regexp-71.html
可以使用這個小工具測試你的正則表達式Test javascript regex
獲取字符編碼
我一直記不住“<”這個字符的編碼是啥,有了EmEditor就不用愁了。把光標置于“<”的左側(注意是左側而不是選中它),然后使用菜單“View > Character Code Value... (Ctrl+I)”就可以知道它的ANSI和Unicode編碼了。
“景”的Unicode編碼為“666F”,就是“順順順發(fā)”,知道我的運氣為啥一直這么好了吧?
連字符計數(shù)功能都做得這么細致……
沒想到這篇破文章寫了 n 多小時都沒寫完,真想知道自己已經寫了多少字了。
原來才寫了2000多字。
類似IE7的Tab頁
在空白處雙擊鼠標左鍵,就可以新建一個空白文檔。
豐富的定制功能
使用菜單“Tools > Properties for All Configurations”可以設置所有類型的文檔屬性;使用菜單“Tools > Select Configuartion > C#”可以單獨設置C#文檔的屬性。
例如如果把上圖中的“Vertical Line”復選框打上勾,就可以在文檔中顯示一條銀灰色的豎線,相當酷(這個有趣的功能是扇子發(fā)現(xiàn)的,特此感謝)。