YAMAHAgb1的个人博客分享 http://blog.sciencenet.cn/u/YAMAHAgb1

博文

用VIM补全catalog的缺失列

已有 3677 次阅读 2012-10-10 01:51 |个人分类:系统之类|系统分类:科研笔记

我有个catalog. 作者给了格式,写进IDL里就是f='()'之流,数据类型都有。

于是readf, lun, a, format=f 悲剧发生了...

有的源后几列没有数据catalog里面就连空格都没有写啊坑爹的!于是每行不是一样长,全读进去readf太傻当然就不认了,这行短就窜到下一行了!

当然,以下情况可以不用补全后面的列:

1)那几列数反正不需要那也无所谓。不要了想给‘’吧,但是这也需要每行列数相同的。所以干脆就readcol,读到你要的地方。

2)catalog及其有规律或者数目不大,那大可以分段设a和f,分开读。可是目前这个把我搞抓狂了的有2907行啊!!!每行都不一样有木有!!!

所以,如果所有列都想要,用最傻但是readf可以照常用的办法,把短的行用空格补全……当然也可以用别的补全,办法一样的,原则就是不能使数据读出来把自己confuse了(比如用接近的数据补全)。

方法0: 从f里数这行需要的列数,每行¥(坑爹的我想打米刀的)挪到最后一列手动空格补全……我闲的么……

方法1: 重点来了。假设F设定的列数是99,我们的目标是把短于99列的都补全到99列!前提: Linux VIM 环境。

  step 1)键盘 ESC 回车,输入 :0 挪到第一行

  step 2) 输入qm进入recording模式 (注意,q后面可以是别的字母,代表寄存器名称,这里用m是因为我看的录制例子用的是m,囧)

  step 3) 输入¥(还是美刀符号)挪到最后一列, 输入i进入insert模式, 手动空格,输入多少随意,确保增加的空格数使最短列的总列数>99

 step 4) ESC回车,进入command模式,输入j或者向下键进入下一行

 step 5) 输入q。 至此录制结束。

 step 6) 输入1000@m (这里1000表示重复录制的内容1000次,m是寄存器名称)高潮来了吧!再接再厉继续2000@m, 直到提示到文件末尾位置,所有行都补上空格了!!

问题是,至此大家都>=99列了,而且还是每一列都不一样……继续

 step 7) 还是:0进入第一行, 把光标用H/L或者左右方向键挪到100列的位置

 step 8) command模式下 输入qm (不换了还是m寄存器)进入recording

 step 9) 输入 dw 看到了什么!这一行大于100列的(包括100列)都被删掉了有木有!(dw还有这用法呢!)

 step 10) 输入j 进入下一行 ,注意这时对应的正好是下一行的100列

 step 11) 输入q 退出录制

 step 12) 随便怎么@m了,最后删光即可~

于是就……搞定了!大家都是99列了!这么极品的catalog也不用担心readf读不出来了!yeah !!

(另外我才不告诉你我先用了办法0受不了了才换的办法1呢!)

继续干活……

https://blog.sciencenet.cn/blog-773206-620912.html


下一篇:IDL使用笔记 (持续更新)
收藏 IP: 139.184.131.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-23 23:58

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部