EmEditor 的搜索提取宏
1、将最下文本保存为 EmCommnMarco.jsee;
2、 宏-〉自定义-〉新建-〉选择 EmCommnMarco.jsee;
3、宏-〉设置为当前宏
4、按下F4就运行宏了
/**
* 根据输入的正则表达式,提取与之匹配的字符串,并新建一个文档显示所有匹配的字符串,
* 显示时每个匹配项占一行
*
* @author Guapo
* @version v1.0
*/
function getText()
{
var _regex=prompt("本程序用来提取正则表达式匹配的字符串,请输入正则表达式","");
if(_regex==""||_regex==null)
{
alert("输入为空,请重新输入");
return;
}
var regex=new RegExp(_regex,"gim");
document.selection.SelectAll();
var textInCurrentDocument=document.selection.Text;
var matchResultArray=textInCurrentDocument.match(regex);
if(matchResultArray)
{
var len=matchResultArray.length;
editor.NewFile();
for(var i=0;i<len;i++)
{
document.writeln(matchResultArray[i]);
}
}
else
{
alert("没有找到匹配的字符串");
}
}
/**
* 拷贝正在编辑的文档的完整路径(含文件名和扩展名)到剪贴板
*
* @author Guapo
* @version v1.0
*/
function copyFullName()
{
if(document.Saved)
{
document.CopyFullName();
}
else
{
alert("请保存文件后再执行此命令");
}
}
/**
* 拷贝正在编辑的文档的路径(不含文件名和扩展名)到剪贴板
*
* @author Guapo
* @version v1.0
*/
function copyPath()
{
if(document.Saved)
{
document.CopyPath();
}
else
{
alert("请保存文件后再执行此命令");
}
}
/**
* 删除当前正在编辑文档的行首的所有空格(包含Tab键)
*
* @author Guapo
* @version v1.0
*/
function deleteLineStartBlank()
{
document.selection.Replace("^\\s*","",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
}
/**
* 删除当前正在编辑文档的行尾的所有空格(包含Tab键)
*
* @author Guapo
* @version v1.0
*/
function deleteLineEndBlank()
{
document.selection.Replace("\\s*$","",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
}
/**
* 为当前正在编辑文档的每一行的行首添加n个空格
*
* @author Guapo
* @version v1.0
*/
function addBlank2LineStart()
{
var string_n=prompt("请问您要给行首添加几个空格呢?","1");
if(isN(string_n))
{
var s="";
var int_n=parseInt(string_n);
for(var i=0;i<int_n;i++)
{
s+=" ";
}
s+="\\0";
document.selection.Replace("^.",s,eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.HighlightFind=false;
return;
}
else
{
alert("您输入的不正确,请重新输入");
}
}
/**
* 为当前正在编辑文档的每一行的行尾添加n个空格
*
* @author Guapo
* @version v1.0
*/
function addBlank2LineEnd()
{
var string_n=prompt("请问您要给行尾添加几个空格呢?","1");
if(isN(string_n))
{
var s="";
s+="\\0";
var int_n=parseInt(string_n);
for(var i=0;i<int_n;i++)
{
s+=" ";
}
document.selection.Replace(".$",s,eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.HighlightFind=false;
return;
}
else
{
alert("您输入的不正确,请重新输入");
return;
}
}
/**
* 将当前正在编辑文档中的所有>=两个的相连空格替换成一个,只支持英文半角空格
*
* @author Guapo
* @version v1.0
*/
function replace2MoreBlank()
{
document.selection.Replace(" {2,}"," ",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
}
/**
* 将当前正在编辑文档中的所有>=两个的相连空行替换成一个
*
* @author Guapo
* @version v1.0
*/
function replace2MoreNewLine()
{
return;
}
/**
* 为当前正在编辑文档中的所有行的行首添加特定的字符串
*
* @author Guapo
* @version v1.0
*/
function addString2LineStart()
{
var s=prompt("请问您要在行首添加什么字符串呢?","在这里输入要添加的字符串");
if(s==""||s==null)
{
return;
}
var t="\\0";
document.selection.Replace("(^.)|(^\\n)",s+t,eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.HighlightFind=false;
}
/**
* 为当前正在编辑文档中的所有行的行尾添加特定的字符串
*
* @author Guapo
* @version v1.0
*/
function addString2LineEnd()
{
var s=prompt("请问您要在行尾添加什么字符串呢?","在这里输入要添加的字符串");
if(s==""||s==null)
{
return;
}
var t="\\0";
document.selection.Replace("(.$)|(^\\n$)",t+s,eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.HighlightFind=false;
}
function isN(s)
{
if(s==null||s=="")
{
return false;
}
var array=s.match(/\d+/);
if(array)
{
if(s==array[0])
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
mainMenu=CreatePopupMenu();
mainMenu.Add("拷贝路径(不含文件名)",1);
mainMenu.Add("拷贝完整路径(含文件名)",2);
mainMenu.Add( "", 0, eeMenuSeparator );
mainMenu.Add("利用正则表达式提取字符串",3);
mainMenu.Add( "", 0, eeMenuSeparator );
mainMenu.Add("删除行首所有空格",4);
mainMenu.Add("删除行尾所有空格",5);
mainMenu.Add("行首添加n个空格",6);
mainMenu.Add("行尾添加n个空格",7);
mainMenu.Add( "", 0, eeMenuSeparator );
mainMenu.Add("将>=两个的相连空格替换成一个",8);
mainMenu.Add("将>=两个的相连空行替换成一行",9);
mainMenu.Add( "", 0, eeMenuSeparator );
mainMenu.Add("在行首添加特定的字符串",10);
mainMenu.Add("在行尾添加特定的字符串",11);
mainMenu.Add( "", 0, eeMenuSeparator );
mainMenu.Add("关于",100);
var witchItem=mainMenu.Track();
switch(witchItem)
{
case 1:
copyPath();
break;
case 2:
copyFullName()
break;
case 3:
getText();
break;
case 4:
deleteLineStartBlank();
break;
case 5:
deleteLineEndBlank();
break;
case 6:
addBlank2LineStart();
break;
case 7:
addBlank2LineEnd();
break;
case 8:
replace2MoreBlank();
break;
case 9:
replace2MoreNewLine();
break;
case 10:
addString2LineStart();
break;
case 11:
addString2LineEnd();
break;
case 100:
alert("Author:Guapo\nEmail:[email protected]");
break;
default:
break;
}