问一个vim文本处理技术的问题

Vim、Emacs配置和使用
回复
lh-n
帖子: 40
注册时间: 2009-02-23 15:52

问一个vim文本处理技术的问题

#1

帖子 lh-n » 2010-12-07 10:36

我想要一个常用英文单词的词典文件(用于词典补全),但是在网上找不到,于是我想自己做一个。
我手头有一些其他软件的词典文件,用vim打开后,但是里面除了英文单词外还有很多其他的字符乱码。我想知道如何将连续的 非a-zA-Z 字符变成一个换行符?
这样就可以把每个单词变成一行,另外如何删除列数小于5的行(也就是单词长度小于5的单词,这样的单词没必要补全)?还有,如何删除重复的行?
头像
lilydjwg
论坛版主
帖子: 4248
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 问一个vim文本处理技术的问题

#2

帖子 lilydjwg » 2010-12-07 11:39

这个就不用 Vim 了吧。这样试试:

代码: 全选

awk '
BEGIN {
  RS="[^A-Za-z]+"
}
{
  if(length($0) >= 5){
    print $0
  }
}
'|sort|uniq
头像
lilydjwg
论坛版主
帖子: 4248
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 问一个vim文本处理技术的问题

#3

帖子 lilydjwg » 2010-12-07 11:58

Vim 里试下以下命令,可能速度有些慢。

代码: 全选

:%s/[^[:alpha:]]\+/\r/g
:v/...../d
:sort u
lh-n
帖子: 40
注册时间: 2009-02-23 15:52

Re: 问一个vim文本处理技术的问题

#4

帖子 lh-n » 2010-12-07 12:30

lilydjwg 写了:Vim 里试下以下命令,可能速度有些慢。

代码: 全选

:%s/[^[:alpha:]]\+/\r/g
:v/...../d
:sort u
非常好,只是第一条命令要执行上百次,不过利用宏很好的完成了。最终完全达到了我要的效果。谢谢你了! :em11
回复