這巨集想分享很久了,一直忘了,趁現在忽然想起快來紀錄一下。
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;
}可以看看操作影片
如果懶得自己存一個,可以從這邊下載:
