当前位置:首页 > 五笔打字软件 > >正则表达式+神之编辑器VIM,码表处理就是如此轻松加愉快啊.
正则表达式+神之编辑器VIM,码表处理就是如此轻松加愉快啊.

正则表达式是对文本进行抽象匹配并替换的好东东,最近刚刚小有研究,再加上VIM的巨强大支持,简直就是无所不能啊!

下面是最近研究的一些用正则表达式在VIM上对码表进行的处理,和大家分享下.

GVIM7.2下载地址:ftp://ftp.vim.org/pub/vim/pc/gvim72.exe
适用于XP,并且以下正则表达式都是在此版本上测试并完成的,不保证其它系统和软件版本适用.

虽说可以只用一条命令就可以达到效果,但通过测试,排序功能的确会比较影响运行效率,所以为了不影响速度,把筛选和排序分开运算.
另外还有一些是需要空格替换回车的,那些命令也不能同时运行.

:sort ur/\a\+/    //此为排序,当然如果不想排也可以不使用.此排序功能可以删除完全相同的任意行,只保留一行,并按字母的顺序进行排序.
:%s/ /\r/g    //此为将筛选出来的有空格分隔的结果用回车替换空格,使其保持一致性.

用vim打开要修改的词库文档,所有分两行的命令,都必须先输入":",进入VIM命令模式,输入或复制粘贴第一行,回车,运行完毕后,再第二行,回车.即可.

最后,友情提示,下面列出的所有正则表达式只适用于极点格式的词库文档哦.也就是:
[text]    //以下
{
    ...
     ...
     ...
}    //z以上的纯码表加空格分隔的单字及词组


----------------------------------------------------------------------------

一级简码:
:%s/^\a\{2,}.*$//g | %:g/^$/normal dd
:sort ur/\a\+/

二级码:
:%s/^\a\{3,4}.*$\|^\a\{1} .*$//g | :%g/^$/normal dd
:sort ur/\a\+/

3J码:
:%s/^\a\{1,2} .*$\|^\a\{4}.*$//g | :%g/^$/normal dd
:sort ur/\a\+/

四级码:
:%s/^\a\{1,3} .*$//g | :%g/^$/normal dd
:sort ur/\a\+/


删除所有二字及二字以上词组:
:%s/ \~\@<![^~ ]\{2,}//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/
删除所有三字及三字以上词组:
:%s/ \~\@<![^~ ]\{3,}//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/
删除所有四字及四字以上词组:
:%s/ \~\@<![^~ ]\{4,}//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/
删除所有五字以上短句:
:%s/ \~\@<![^~ ]\{5,}//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/


导出所有常用单字:
有码表:
:%s/ \~\{1}\S\+\| \S\{2,}//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/
无码表:
:%s/ \~\{1}\S\+\| \S\{2,}//g | :%s/\a\+\s*//g | :%g/^$/normal dd
:%s/ /\r/g

导出所有生僻字:
:%s/ \~\@<![^~ ]\+//g | :%s/^\a\+\s*$//g | :%g/^$/normal dd
:sort ur/\a\+/
删除所有生僻字:
:%s/ \~\S\+//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/

导出二字词组:
有码表:
:%s/ \~\{1}\S\+\| \S\{3,}\| \S\{1}\S\@!//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/
无码表:
:%s/ \~\{1}\S\+\| \S\{3,}\| \S\{1}\S\@!//g | :%s/\a\+\s*//g | :%g/^$/normal dd
:%s/ /\r/g

导出三字词组:
有码表:
:%s/ \~\{1}\S\+\| \S\{4,}\| \S\{1,2}\S\@!//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/
无码表:
:%s/ \~\{1}\S\+\| \S\{3,}\| \S\{1}\S\@!//g | :%s/\a\+\s*//g | :%g/^$/normal dd
:%s/ /\r/g

导出四字成语:
有码表:
:%s/ \~\{1}\S\+\| \S\{5,}\| \S\{1,3}\S\@!//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/
无码表:
:%s/ \~\{1}\S\+\| \S\{5,}\| \S\{1,3}\S\@!//g | :%s/\a\+\s*//g | :%g/^$/normal dd
:%s/ /\r/g

导出五个字以上的短句:
有码表:
:%s/ \~\{1}\S\+\| \S\{1,4}\S\@!//g | :%g/^\a\+\s*$/normal dd
:sort ur/\a\+/
无码表:
:%s/ \~\{1}\S\+\| \S\{1,4}\S\@!//g | :%s/\a\+\s*//g | :%g/^$/normal dd
:%s/ /\r/g

仅删除码表头:
:%s/^\a\+ //g

---------------------------------------------------------------------------

但仍然有一个棘手的问题,在对分类出来的词库进行修改后,需要一个合并相同码表头的不同单字或词组,虽说VIM甚至有更强大的功能,但对于一些比较个性化的需求还是需要自己动手啊,可惜我C学的半桶水,还有待进一步研究学习,看来还得等日后再研究解决这个合并问题.

所有表达式都亲测通过,如果发现什么问题或错误再或者还有什么特殊的需求请留言,我尽量满足.

更多>>>与"正则表达式+神之编辑器VIM,码表处理就是如此轻松加愉快啊."相关的
  • 98五笔与86五笔字编码的区别
  • 学习拆字技巧和规则
  • 98版简明五笔打字教程
  • 98版字根表和字根助记词
  • 86版字根表带口诀图+助记词
  • 学习打字键盘操作姿势及指法
  • 86版汉字输入教程汇总
  • 教新手认识键盘布局和功能键
  • 基本指法练习和数字键练习
  • 【五笔第一讲】五笔打字的介绍和
  • 金山打字通 2008介绍
  • 单字输入编码规则(五笔练习之拆
  • 指法练习XP 4.70
  • 【五笔第二讲】键盘分区和区位号
  • 请问怎样才能快速学会五笔
  • 五笔打字员 7.3 珍藏版介绍下载
  • 快打一族 6.02
  • 分享心得:五笔功能的小发现
  • 王码五笔字型输入法 86&98
  • 五笔简码 - 五笔教程