转:http://blog.sina.com.cn/s/blog_46dac66f010002xz.html
[本文说明] 写过多篇Vim应用小文,为方便阅读,现做整理,并删除旧文。以后凡Vim文章,皆归入此系列。另,为便于搜索,统一vim、gvim及大小写为Vim。 --xbeta 2007年12月20日
[本文目录] 1 处理word目录 2 改变大小写 3 制作极点单字库
1 处理word目录
任务:
从word中把目录复制出来,去除多余信息(标题编号、页码)
命令:
%s/\d\|\.\|\s//gc
从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会崩溃的问题。
极点有一个这样的工具,但我用的不熟。
想到了强大的VIM文本编辑器,一试,果然成功,并且简便。
与大家分享如下。(如果试验请谨慎,先做好备份。本文作者不对后果承担任何责任)
并感谢杜老师在极点5.0中更正了极点设置后VIM会崩溃的问题。
极点词库格式很简单,编码1-4字母,几个词,用空格分开。例如下:
|aaff 蓬蓬勃勃 苷
|aafg 葡萄干
|aafh 苏东坡
|aafn 工场
|aafo 蘜
|aaff 蓬蓬勃勃 苷
|aafg 葡萄干
|aafh 苏东坡
|aafn 工场
|aafo 蘜
要去除多于1字的词语,只要2行命令就OK。
用VIM打开词库文件。
执行命令
用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
而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表示替换所有匹配的情况,并且每次要用户手工确认(这是为了直观和谨慎,如果有把握,可以不确认,直接执行)。
:表示外部命令
.,$表示当前行到全文结束
s表示替换
共有三个/
前两个//之间是要被替换的旧字符串(正则表达式)。“ \S\{1,}\( \|$\)”表示“先有一个空格,再有1-N个非空字符,然后是一个空格或行尾”。
后两个//之间是要替换为的新字符串,本例中,为一个空格。
gc表示替换所有匹配的情况,并且每次要用户手工确认(这是为了直观和谨慎,如果有把握,可以不确认,直接执行)。
:.,$g/^\a\{1,4} $/normal dd
解释如下:
:表示外部命令
g表示找到某个字符串,然后执行某个操作
第一个/之后是要找的字符串,“^\a\{2,4} $”表示找“行首,然后是2-4个英文字母,然后空格,然后行尾”
第二个/之后是要执行的命令,“normal dd”,在VIM中是删除本行。
:表示外部命令
g表示找到某个字符串,然后执行某个操作
第一个/之后是要找的字符串,“^\a\{2,4} $”表示找“行首,然后是2-4个英文字母,然后空格,然后行尾”
第二个/之后是要执行的命令,“normal dd”,在VIM中是删除本行。