爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9566|回复: 1

[经验总结] [vim for ncl] 分享一个生成ncl.dic的代码

[复制链接]

新浪微博达人勋

发表于 2017-7-29 09:02:54 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 packard 于 2018-1-21 00:48 编辑

(18年1月编辑说明:把附件粘了上来,大家不用金钱下。)
原文以英文发表在 http://mailman.ucar.edu/pipermail/ncl-talk/2017-April/008731.html,但看上去没人鸟,所以在中文论坛也给中文观众朋友们分享一下。
ncl官网上有关于vim编辑器的提示(没读过的话先读一下,重点关注auto-completion功能,否则不知道我后面说啥):
https://www.ncl.ucar.edu/Applications/editor.shtml#vim
(国内镜像)http://met.sysu.edu.cn/GloCli/Team/ncl-mirror/Applications/editor.shtml#vim
里面有 ncl.dic,可以用作自动补全的字典。但是有两个问题
1. 字典有点旧,13年的,没有更新到6.4.0版本
2. 有些词语失踪了(是因为一行太长,后面的字没读进去)

可以执行以下短代码(比如每次ncl版本更新时)
(sed.ncl.dic.sh) http://bbs.06climate.com/forum.php?mod=attachment&aid=Njc0MDR8ZTNjZTc1NGVhZmI1ZDI5NzljNDZjYjUzOTgyYWU2MTl8MTcxMzk4MzY2Mw%3D%3D&request=yes&_f=.sh
  1. #!/bin/sh
  2. # produce ncl3.dic from downloaded ncl3.vim

  3. wget http://www.ncl.ucar.edu/Applications/Files/ncl.dic
  4. mv -i ncl.dic ~/.vim/dictionary/
  5. wget http://www.ncl.ucar.edu/Applications/Files/ncl3.vim  # updated 2 days after release of 6.4.0
  6. mv -i ncl3.vim ~/.vim/syntax/

  7. sed -n '/^syn keyword nclKeyword/p' ~/.vim/syntax/ncl3.vim > dic3b.ncl
  8. sed -n '/^syn keyword nclBoolean/p' ~/.vim/syntax/ncl3.vim >> dic3b.ncl
  9. sed -n '/nclKeyword/d;/nclBoolean/d;/^syn keyword/p' ~/.vim/syntax/ncl3.vim >> dic3b.ncl
  10. sed -i 's/syn keyword [^ ]* \+\b/\n/' dic3b.ncl

  11. t_update=`sed -n '/^" Updated/s/" Updated //p' ~/.vim/syntax/ncl3.vim`
  12. head -n 5 ~/.vim/dictionary/ncl.dic |sed "s/\(^.* Updated: \+\b\).*$/\1$t_update/;s/\(^.* Author: \+\b\).*$/\1Packard Chan\n" Based on previous version by Prince K Xavier, and ncl3.vim by Carl Schreck/" > ~/.vim/dictionary/ncl3.dic
  13. sed '1d' dic3b.ncl |fold -w 500 -s >> ~/.vim/dictionary/ncl3.dic

复制代码

注意这里我把新的dic文件命名为ncl3.dic。所以 ~/.vimrc 里面也要改成这个名字
(.vimrc) http://bbs.06climate.com/forum.php?mod=attachment&aid=Njc0MDV8MTM0YmUwMjFmZDMyNWMwYzNkMTZmN2Y1YzE2OGE2MDl8MTcxMzk4MzY2Mw%3D%3D&request=yes&_f=.vimrc
  1. "Show autocomplete menus.
  2. set complete-=k complete+=k " Add dictionary search (as per dictionary option)
  3. set wildmode=list:full
  4. set wildmenu
  5. au BufRead,BufNewFile *.ncl set dictionary=~/.vim/dictionary/ncl3.dic
复制代码

附件只是给不能成功重复这些步骤的读者直接提供生成的结果。
(.vimrc) http://bbs.06climate.com/forum.php?mod=attachment&aid=Njc0MDV8MTM0YmUwMjFmZDMyNWMwYzNkMTZmN2Y1YzE2OGE2MDl8MTcxMzk4MzY2Mw%3D%3D&request=yes&_f=.vimrc
(sed.ncl.dic.sh) http://bbs.06climate.com/forum.php?mod=attachment&aid=Njc0MDR8ZTNjZTc1NGVhZmI1ZDI5NzljNDZjYjUzOTgyYWU2MTl8MTcxMzk4MzY2Mw%3D%3D&request=yes&_f=.sh
(ncl3.dic) http://bbs.06climate.com/forum.php?mod=attachment&aid=Njc0MDN8YTI4MDI4ZDc0YzUxYjk2ZjgxMjNkMDEwM2FmOGNiYTN8MTcxMzk4MzY2Mw%3D%3D&request=yes&_f=.dic
---------不关心细节的到此止步----------

(原来ncl.dic的问题)
我在vim7.2下,使用官网上旧的ncl.dic,输入xy,然后 Ctrl+n, 关键字xyCoordData会被截断成xyCo,然后xyCoordDataSpec到xyLineDashSegLenF这些关键词会失踪。
在vim下输 :help 'dictionary' 会提示我字典每行限制长度510 byte,因此导致以上问题。

(引用一下前人工作)
https://www.ncl.ucar.edu/Support/talk_archives/2011/1828.html 提到了我说的两个问题,但当时条件无法自动更新字典
http://bbs.06climate.com/forum.php?mod=viewthread&tid=2411 察觉到词语失踪的问题,并建议 :%s/ /\r\n/g 。但我还是觉得一行一个词有点丑,喜欢 fold -w 500 -s
http://bbs.06climate.com/forum.php?mod=viewthread&tid=49436 给了结果,不给方法。也不能随着版本更新而自动更新。

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-29 11:43:03 | 显示全部楼层
谢谢分享,真是太厉害了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表