這巨集想分享很久了,一直忘了,趁現在忽然想起快來紀錄一下。
EMEDTIOR 軟體就不介紹了,直接來介紹巨集,該巨集的功能其實在許多 文字編輯器都可以看到,常常可以看到一些自動對齊的功能,讓我有點心癢癢的,後來自己想了一下邏輯,就自己寫了腳本來套用了。
以下是腳本:
var replace_str = '[[auto_space]]'; var max_strlength = 10; var strlength_push = 4; var str_data = []; document.selection.Replace("\\t"," ",eeFindNext | eeFindSaveHistory | eeFindReplaceEscSeq | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("\\s+(\\=\\>|\\=|\\,)"," $1 ",eeFindNext | eeFindSaveHistory | eeFindReplaceEscSeq | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace(" (\\=\\>|\\=|\\,)\\s+",replace_str+"$1 ",eeFindNext | eeFindSaveHistory | eeFindReplaceEscSeq | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("= >","=>",eeFindNext | eeFindSaveHistory | eeFindReplaceEscSeq | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceOnlyWord); document.selection.StartOfDocument(); while( document.selection.Find(replace_str,eeFindNext | eeFindSaveHistory |eeFindReplaceOnlyWord) ) { document.selection.StartOfLine(false,eeLineView | eeLineHomeText); document.selection.EndOfLine(true,eeLineView); var str_obj = str_space( document.selection.Text ); str_data.push(str_obj); document.selection.EndOfLine(false,eeLineView); } document.selection.StartOfDocument(); var line = 0; while( document.selection.Find(replace_str,eeFindNext | eeFindSaveHistory |eeFindReplaceOnlyWord) ) { document.selection.StartOfLine(false,eeLineView | eeLineHomeText); document.selection.EndOfLine(true,eeLineView); var str_obj = str_data[line]; var count_space = max_strlength - str_obj.front.length + strlength_push; document.selection.Text = str_obj.front + get_space(count_space) + str_obj.back; document.selection.EndOfLine(false,eeLineView); line++; } document.selection.Replace(replace_str,"",eeFindNext | eeFindSaveHistory | eeFindReplaceCase | eeReplaceAll); function str_space( str ) { var start_index = str.indexOf(replace_str); var front_word = str.substr(0,start_index); var back_word = str.substr(start_index+replace_str.length , str.length); max_strlength = Math.max(max_strlength,front_word.length); return {"front":front_word,"back":back_word} } function get_space(count){ var ret = '',i; for(i=1;i<=count;i++) { ret += ' '; } return ret; }
可以看看操作影片
如果懶得自己存一個,可以從這邊下載: