善用Vim:实例系列(2)

[本文说明]写过多篇Vim应用小文,为方便阅读,现做整理,并删除旧文。以后凡Vim文章,皆归入此系列。另,为便于搜索,统一vim、gvim及大小写为Vim。 –xbeta 2007年12月20日
[本文目录] 1 处理word目录 2 改变大小写 3 制作极点单字库

1 处理word目录

任务:
  从word中把目录复制出来,去除多余信息(标题编号、页码)
命令:
  %s/d|.|s//gc
结果:
  转瞬间200多行1000多字符烟消云灭
附图:
  

2 改变大小写

刚才在BBS上回答了一个问题,当然,这个问题并不复杂。就是“如何把一个文本文件中的大写字母全部替换成小写”。http://www.newsmth.net/bbscon.php?board=NewSoftware&id=840511

  Word当然可以。

  但作为文本,首先想到的还是gVIM,用它如何操作呢?
  打开文件后,不用任何鼠标、菜单,只须在键盘上按下“ggguG”就行了。
  极品软件就是这样:唯有功能强到极致,操作才能简到极致!

解释一下:ggguG分作三段gg gu G
gg=光标到文件第一个字符
gu=把选定范围全部小写

G=到文件结束

3 制作极点单字库

用五笔,我习惯输入单字。为此,就要把词库中的多字词去除。
(之所以不设定为单字模式,因为定义了一些其他词,如bis=http://blog.sina.com.cn/m/xbeta等)
极点有一个这样的工具,但我用的不熟。
想到了强大的VIM文本编辑器,一试,果然成功,并且简便。
与大家分享如下。(如果试验请谨慎,先做好备份。本文作者不对后果承担任何责任)
并感谢杜老师在极点5.0中更正了极点设置后VIM会崩溃的问题。
极点词库格式很简单,编码1-4字母,几个词,用空格分开。例如下:
  |aaff 蓬蓬勃勃 苷
  |aafg 葡萄干
  |aafh 苏东坡
  |aafn 工场
  |aafo 蘜
要去除多于1字的词语,只要2行命令就OK。
用VIM打开词库文件。
执行命令
  :.,$s/ S{2,}( |$)/
/gc
  :.,$g/^a{1,4} $/normal
dd
保存,就完了。
只要2行命令,而每条命令又如此古怪,大家可以想见VIM之功能强大。

  VI是UNIX下文本编辑器的鼻祖。也就是说,基于它有很多改进的分支。
  而VIM则是其中影响力最大的一支。它的第一个版本出现于1976年(哪个软件还有如此长的历史而依然活跃)。
  我以前知道并用过盗版的Ultraedit、Editplus、Emeditor,认识VIM后将它们全舍弃了。
  你能设想VIM是免费开源的吗?
  VIM在windows平台下的版本是gVIM,我用的就是它。
  安装后(包括多国语言文件、插件、语法文件)占空间20M。其实,最少只要一个exe文件不到2M就可以用了。
  有兴趣的可以到华军下载一个。再到网上找找教程,或到水木社区smth.org的VIM版。


:.,$s/ S{2,}( |$)/ /gc

解释如下:
  :表示外部命令
  .,$表示当前行到全文结束
  s表示替换
共有三个/
  前两个//之间是要被替换的旧字符串(正则表达式)。“ S{1,}(
|$)”表示“先有一个空格,再有1-N个非空字符,然后是一个空格或行尾”。
  后两个//之间是要替换为的新字符串,本例中,为一个空格。
  gc表示替换所有匹配的情况,并且每次要用户手工确认(这是为了直观和谨慎,如果有把握,可以不确认,直接执行)。
:.,$g/^a{1,4} $/normal dd
解释如下:
  :表示外部命令
  g表示找到某个字符串,然后执行某个操作
  第一个/之后是要找的字符串,“^a{2,4}
$”表示找“行首,然后是2-4个英文字母,然后空格,然后行尾”
  第二个/之后是要执行的命令,“normal
dd”,在VIM中是删除本行。
(本篇完)

>

《善用Vim:实例系列(2)》有一个想法

  1. 您好!我想做个极点笔单字码表,在执行第一个命令时,出现“E486:找不到模式: S{2,}( |$)/ /gc”因此没法成功。很希望昨到xbeta的帮助。谢谢!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据