Categories: 程式

[巨集] Emeditor 自動對齊

這巨集想分享很久了,一直忘了,趁現在忽然想起快來紀錄一下。

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;
}

可以看看操作影片

如果懶得自己存一個,可以從這邊下載:

auto_space.zip

Mesak

我是米薩克,想了解更多可以點選  關於我 

Disqus Comments Loading...
Share
Published by
Mesak

Recent Posts

[教學] 利用 n8n 建立 LINE 聊天機器人

n8n 有多厲害,這邊就不贅述...

3 週 ago

[開箱] IROCKS K103R 熱插拔無線機械式鍵盤

許久沒有開箱了,近年鍵盤的規格...

3 個月 ago

[開箱] IROCKS-K85R 無線機械鍵盤

最近一直想要組一把 無線的 9...

1 年 ago

[開箱] IROCKS K75M 銀色上蓋機械式鍵盤

IROCKS K75M 這款鍵...

2 年 ago

[開箱] IROCKS M31E 粉紅色光學遊戲滑鼠

喜歡粉紅色周邊產品的朋友,有一...

2 年 ago