关闭

Emeditor 增强宏功能脚本

1732人阅读 评论(0) 收藏 举报
分类:

/**
 * 根据输入的正则表达式,提取与之匹配的字符串,并新建一个文档显示所有匹配的字符串,
 * 显示时每个匹配项占一行
 *
 * @author     Guapo
 * @version    v1.2
 * @date       2011年11月17日 20:37:04
 * @history    v1.2 修改原有显示结果方式,采用一次性输出而不是逐行输出
 */
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)
	{
		editor.NewFile();
		document.write(matchResultArray.join("\n"));
	}
	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);
}

/**
 * 将当前正在编辑文档中的所有>=两个的相连空格替换成一个,只支持英文半角空格
 *
 * @author     Guapo
 * @version    v1.0
 */

function replace2MoreBlank()
{
	document.selection.Replace(" {2,}", " ", eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
}

/**
 * 为当前正在编辑文档中的所有行的行首添加特定的字符串
 *
 * @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;
	}
}

function rearrangeTabSplitString()
{
	var input = prompt("本程序用来重新组织用\\t分开的字符串,##x##表示第x列", "");
	if (input == "" || input == null)
	{
		alert("输入为空,请重新输入");
		return;
	}

	document.selection.EndOfDocument();
	var howManyLines /*文档的总行数,如15,表示从1到15共15行*/ = document.selection.GetActivePointY(eePosLogical);

	var array = []; /*存放当前行字符串形成的数组*/
	var allLine = []; /*存放所有行字符串形成的数组*/
	var currentLine; /*光标所在行的内容*/

	document.selection.StartOfDocument();
	document.selection.StartOfLine(false, eeLineView | eeLineHomeText);

	for (var i = 1; i <= howManyLines; i++)
	{
		document.selection.EndOfLine(true, eeLineView);
		document.selection.Copy(eeCopyUnicode);
		currentLine = document.selection.Text;
		array = currentLine.split(/\t/);
		allLine.push(array);
		document.selection.StartOfLine(false, eeLineView | eeLineHomeText);
		document.selection.LineDown(false, 1);
	}

	var matchResult = input.match(/##\d+##/g); // Returns ["##1##", "##2##", "##3##"]
	var matchResultLength = matchResult.length;

	var positionArray = []; //Returns [1,2,3]
	for (var i = 0; i < matchResultLength; i++)
	{
		var temp = matchResult[i].match(/(\d+)/);
		positionArray.push(temp[1] - 0);
	}
	var positionArrayLength = positionArray.length;

	var allLineLength = allLine.length;
	var result = [];
	for (var i = 0; i < allLineLength; i++)
	{
		var s = input;
		for (var j = 0; j < matchResultLength; j++)
		{
			var p = positionArray[j] - 1;
			s = s.replace(matchResult[j], allLine[i][p]);
		}
		result.push(s);
	}

	editor.NewFile();
	for (i = 0; i < result.length; i++)
	{
		document.writeln(result[i]);
	}
	return;
}

function about()
{
	var s = "这是我为了自己编辑文件时更文件写的一个emeditor的插件,多数命令\n都是见名知意,这里解释一下\"重新组织用Tab分开的字符串\"的用法\n\n";
	s += "有时你可能需要写大量像下面这样的代码\n";
	s += "var name=document.getElementById(\"name\");//姓名\n";
	s += "var age=document.getElementById(\"age\");//年龄\n";
	s += "var sex=document.getElementById(\"sex\");//性别\n";
	s += "var major=document.getElementById(\"major\");//专业\n\n";
	s += "这是随意举的例子,观察发现每行都很象,每行不同的只是变量名和后\n面的中文,于是可以新建一文件,输入下面的文字,之间用tab隔开,如下:\n\n";
	s += "name    姓名\n";
	s += "age     年龄\n";
	s += "sex     性别\n";
	s += "major   专业\n\n";
	s += "然后调用\"重新组织用Tab分开的字符串\",输入\n";
	s += "var ##1##=document.getElementById(\"##1##\");//##2##\n";
	s += "其中##n##表示用tab分开字符串中的第几个(从1算起)。\n";
	s += "程序会将上面的代码自动生成,我想我说的应该清楚了\n\n\n";
	s += "提示:从word文件中的表格里复制过来的数据本身就是用tab分开的,\n可以直接使用这个命令。所以如果你的设计说明书中的变量都是在表格\n里,那么有可能会比较方便。\n";
	var me = "\n\nAuthor:Guapo\nEmail:yangshuai@gmail.com";

	alert(s + me);
}

mainMenu = CreatePopupMenu();
mainMenu.Add("重新组织用Tab分开的字符串", 102);
mainMenu.Add("", 0, eeMenuSeparator);
mainMenu.Add("拷贝路径(不含文件名)", 1);
mainMenu.Add("拷贝完整路径(含文件名)", 2);
mainMenu.Add("", 0, eeMenuSeparator);
mainMenu.Add("利用正则表达式提取字符串", 3);
mainMenu.Add("", 0, eeMenuSeparator);
mainMenu.Add("将>=两个的相连空格替换成一个", 8);
mainMenu.Add("", 0, eeMenuSeparator);
mainMenu.Add("删除行首所有空格", 4);
mainMenu.Add("删除行尾所有空格", 5);
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 8:
		replace2MoreBlank();
		break;
	case 10:
		addString2LineStart();
		break;
	case 11:
		addString2LineEnd();
		break;
	case 100:
		about();
		break;
	case 102:
		//重组用\t分开的字符串
		rearrangeTabSplitString();
		break;
	default:
		break;
}


找不到原作者联系方式和程序出处,侵删。


此脚本需保存为gb2312编码才能运行!

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

EmEditor 排版脚本

  • 2010-12-29 19:20
  • 364KB
  • 下载

emeditor的快捷键

文件 新建文本 Ctrl+N 创建一个新的文本文件。 文件 新建 显示弹出菜单来使用指定的配置新建一个文件。 文件 新建并粘贴 创建一个新的文件并插入剪贴板中的内容。 文件 新建并粘贴为引用文本 新建一个文件并粘贴剪贴板内容为引用文本。 文件 新建文件,粘贴为引用文件并换行 ...
  • ujs_lifazhu
  • ujs_lifazhu
  • 2014-04-11 14:25
  • 309

解决Emeditor、PyDev、Py2Exe的中文输出问题

在搭建完Emeditor的Python开发环境后,一些代码就可以在Emeditor中进行开发了,比PyDev轻便一些。然而,问题来了,这就是中文。PyDev、Emeditor、Py2Exe,这三者,在中文处理中不统一,例如:   在Eclipse中,完美运行,输出中文;同时,py2exe打...
  • maliao1123
  • maliao1123
  • 2016-11-01 16:01
  • 126

Emeditor宏编译java文件并执行

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的...
  • yangliangliang2011
  • yangliangliang2011
  • 2015-05-15 14:15
  • 899

轻量级程序编辑器的选择:EmEditor、Editplus等---Web开发系列之工具篇

近一段时间将精力转向了Web开发领域,主要学习了PHP的开发技术,进一步熟悉和研究了JavaScript的应用。而在这一过程中, 陆续试用了不少的开发工具,今天稍作整理做个这方面的总结,也希望能给在工具选择上犹豫的朋友有所参考。   在软件开发领域,"思想"和"工具&q...
  • xysoul
  • xysoul
  • 2015-04-18 12:23
  • 5351

使用Editplus编译运行Java程序

安装并配置好Java的运行环境,安装EditPlus软件。      首先,从菜单“工具(Tools)”->“配置用户工具...”进入用户工具设置。在类别里展开“工具”树形菜单->“用户工具”,选择“组和工具项目”中的“Group ...
  • cai7095576
  • cai7095576
  • 2013-10-26 23:42
  • 1045

转换算法(中文数字转阿拉伯数字)

题解: 1.权位:如一千二百三十 1的权位是千,节以万为节规则1:以10000为小节,小节的结尾即使是0,不使用0, 规则2:小节内两个非0的数之间使用0 规则3:当小节的千位事0,若小节的前一小节若无其他数字,则不用0,否则就要用0;代码:#include <iostream> ...
  • wosiguwozai0133
  • wosiguwozai0133
  • 2017-03-09 09:52
  • 184

emeditor的快捷键

文件 新建文本 Ctrl+N 创建一个新的文本文件。 文件 新建 显示弹出菜单来使用指定的配置新建一个文件。 文件 新建并粘贴 创建一个新的文件并插入剪贴板中的内容。 文件 新建并粘贴为引用文本 新建一个文件并粘贴剪贴板内容为引用文本。 文件 新建文件,粘贴为引用文件并换行 创建一个文件,粘...
  • ziyifengfei
  • ziyifengfei
  • 2013-10-04 13:19
  • 2191

EmEditor与正则表达式

EmEditor与正则表达式   正则表达式,英文 Regular expression,简写Regexes或Regex。   应用概述:提供与预期的搜索结果匹配的确切文本来进行字符串的搜索和替换操作,这种技术不仅仅用于开发领域,更被集成到一些常见的文本扩展编辑器,如UltraEdit、EmEdi...
  • wxl0610
  • wxl0610
  • 2013-09-13 17:48
  • 548

用EmEditor替换掉Windows自带的记事本方法

用EmEditor替换掉Windows自带的记事本方法 前言:EmEditor的功能的确比Windows自带的记事本的功能强悍的不是一星半点,一直想把Windows自带的记事本给替换掉,可是就是没找到方法,看见有人发布了一篇文章,然后用这个灵感,终于将Windows自带的记事本给替换掉了。...
  • kxjrzyk
  • kxjrzyk
  • 2015-12-31 16:21
  • 1378
    个人资料
    • 访问:96928次
    • 积分:1674
    • 等级:
    • 排名:千里之外
    • 原创:70篇
    • 转载:23篇
    • 译文:0篇
    • 评论:20条
    文章分类
    最新评论
    网络工程师相关