是否存在一种专门编辑文本的脚本语言?

据大家所知,有没有这样一种脚本语言:专门用于编辑文本信息?

我现在是比较习惯 Emacs 的快捷键,而且最近使用的键盘按方向键不太方便,所以很希望所使用的软件都能用 Emacs 的快捷键来操作。

一开始,我使用 XKeymacs (日本人开发的一款小工具),它能把 Windows 下所有应用程序的快捷键都转换成 Emacs 的。不过这个软件不太稳定,和 mitty 等软件配合得也不好;可配置性也不强,只能选择是否启用某些快捷键。

后来我想到 AutoHotKey,它算是一门脚本语言,可以用脚本模拟鼠标、键盘操作,控制 Windows 窗口等,最主要的是可以给任何操作绑定热键。就定义快捷键而言,它绝对是无可匹敌了,我仔细研究了一下它的文档,发现它只能用来组合现有功能,而且不具备 操作文本的能力。

简单地说,我用 AutoHotKey 能做到的地步就是将 Windows 记事本一些现有的快捷键切换成和 Emacs 一样,比如用 Ctrl-D 代替 Delete、用 Ctrl-A 代替 Home 等。可是,诸如 Emacs 中 Meta-a 可以移动到句子的开头这种功能,因为 记事本 本身没提供,因此 AHK 也无能为力了。

所以,我在想有没有另一种语言,来设定一些全局的编辑功能?无论光标在哪个编辑窗口里,按 M-f 都能往前移动一个 word、按 M-v 往后移动一个 page,等等。本来,emacs-lisp 是很不错的,可惜它只能用来定制 Emacs,没办法去增强其他程序的功能。而 AHK 可以通过组合来增强现有程序的能力,却没办法编辑文本。如果能有一种结合两者的优点的就好了。

简言之:如果 Emacs 的配置是对整个操作系统有效就好了;或者说,如果操作系统里所有牵涉到编辑的地方都能自动调用 Emacs 来编辑就好了。

想象一下,如果一个工具(或者一门编程语言)能从系统层次上做全局的“光标”控制,无论当前光标处在哪个编辑窗口中(记事本、Word、Outlook 的邮件正文等等),它发送一个类似 forward-char 的命令都能令光标向前移动一个字符,发送 backward-sentence 就后退一句话。如果有这样的工具,再配合 AHK 将这些命令绑定成快捷键,就能在所有文本输入的地方使用相同的编辑功能!

后记

好吧,我语文水平亟待提高,我需要用很多话才能说清自己的想法。

我感觉上面的话还是没表达出我的 Point。首先,我并不是想要一款能完成所有任务的万能的软件,而抛弃所有其他应用软件。比如现在看 pdf 已经有很多优秀的软件了(比如 SumatraPDF),如果就是为了我个人使用的话,我实在想不出任何理由再开发一款 Emacs 的插件专门看 pdf(虽然这看起来的确很酷)。

我主要是看到现在的软件都各自为政,拥有自己一套操作方式。比如删除整一行在 Vim 里是 dd,在 Eclipse 里是 Ctrl-D,而到了 Emacs 里是 C-a C-k。我真正想要的是一种能从系统的角度配置一套符合自己习惯的统一操作的方法。

我相信大家也会有类似的经历:拿到了一个代理 ip 地址和端口,兴冲冲地配置了 ie。要下载?还要配置迅雷等下载工具。要聊天?那 QQ 什么的也要配。悲剧的是有些工具还是弱到不能设置代理!或者有些屁大的软件也很崩溃地自带一个设置代理功能(也不管用不用得上)。但如果有一个软件,在要在其中配置了代理信息,然后所有其他应用程序的网络通信都由它接管(就像拨号连接一样),不用再挨个去设置了,软件开发人员也可以省下不少精力去开发原本就与软件本身无关的功能了。而且这个软件本身的功能也更容易提高,比如增加 filter 功能什么的。

如前文所述,普通的操作已经可以通过配置 AHK 来统一了。于是我想更进一步统一配置所有的文本编辑操作(不一定绑定得和 Emacs 一摸一样,但关键是能像 Emacs 这样可配置)。

时间: 2024-09-17 03:56:38

是否存在一种专门编辑文本的脚本语言?的相关文章

【UWP通用应用开发】编辑文本、绘制图形、3D透视效果及绘制时钟实战

编辑文本及键盘输入 相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码

编辑器-dreamweave编辑 文本域的小疑问?

问题描述 dreamweave编辑 文本域的小疑问? 在使用dreamweaver 往页面加入一个"文本域"时, 发现如果把光标放在代码上加入时,就会出现标签编辑器界面 如下 如果把光标放在设计上加入时,就会出现标签辅助功能界面 如下 同样是加入文本域,怎么会有两种界面? 专家指点

Windows App开发之编辑文本与绘制图形

编辑文本及键盘输入 相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码

JavaScript DOM 学习第二章 编辑文本_基础知识

例子 这个页面就是个例子.点击一个段落,编辑,然后点Ready.你的修改就会呈现. 问题 遇到的第一个问题是:我想用文本框作为编辑区域.一开始我却把内容放不进文本框去.读者发现Mozilla的一个警告说是只有在文本框放置到文档之后才能设置它的value. 另外,在Mozilla下面内容包装的不是很好.我试了好几种wrap参数,但是结果都不是很好. 最严重的问题就是把修改后的内容发回服务器,这是几乎所有的CMS系统都要做的.读者给了我很多高明巧妙的建议.然而因为不能通过JavaScript完成,所

Android自动编辑文本框(AutoCompleteTextView)使用方法详解

自动编辑文本框(AutoCompleteTextView)继承自EditText,能够接受用户的输入编辑,但是有这自己的特色功能:输入一定的字符以后会弹出下拉列表提示供用户选择,用户选择之后会自动填充文本框.这项功能正如浏览器的输入提示: 由于自动编辑文本框继承于EditText,它能够支持EditText的全部属性,但是在输入提示方面它有着自己的独特属性: android:completionHint     为弹出下拉菜单指定提示标题 android:completionThreshold 

edittext-在编辑文本中放进点字符

问题描述 在编辑文本中放进点字符 大家好,我在应用中用到了一个数字模式的编辑文本.需要插入点字符..这样就可以计算浮点型数字.怎么样实现?谢谢 解决方案 inputType=""number""

android-不用编辑文本监听虚拟键盘按键

问题描述 不用编辑文本监听虚拟键盘按键 有没有方法可以监听键盘,如果在Fragment的onCreateView 方法键盘情况是这样的时候: getActivity().getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 还需要键盘在数值模式. 谢谢 解决方案 如果在activity中重写onKeyDown方法,你可以监听键盘按下事件. public boolean

IOS Runtime属性关联实现表格编辑文本

要实现在表格里编辑文本, 表格让我想到了CollectionView,文本让我想起TextView, 做之前想了好久怎么样来获得编辑的是哪个TextView,要获取对应的IndexPath啊,想着之前Cell中的按钮用block来实现,在自定义的Cell中加一个属性存IndexPath,可想着就一个TextView要自定义写一个类这样也未免太麻烦了.正好突然想到之前听过的属性管理,自己就凑着这个机会用了下,赶脚还不错. 有时候类的实例可能是某种机制所创建,而开发者无法令这种机制创建出自己所写的子

background-验证背景是否等于另一个用于编辑文本的背景

问题描述 验证背景是否等于另一个用于编辑文本的背景 在程序中我需要验证背景是否等于另一个用于编辑文本的背景(编辑文本有一个自定义的图片),用的下面的代码但是没有成功: if (editText.getBackground().equals(getResources().getDrawable(R.drawable.edit_text_box_red))) { editText.setBackgroundResource(R.drawable.edit_text_box_white); } 我想实