VIM编辑文件实例
假设有以下文件
1234567
甲甲大学
张三
李四
王五
2222222
乙乙大学
张三三
李四四
王五五
3333333
丙丙大学
张三四
李四五
王五六
……
简单讲,每个队的信息被分成了5行,报名号、学校、队员1、队员2、队员3。我们主要的工作是要删除多余的回车符,将每一队的信息集中到一行。
- 删除多余的空白:“:%s/ //g”;
- 因为总共是1430行,也就是286个组,这个数记下来,下面要用。
- 合并每组的5行:在normal模式下,光标停在报名号这一行,直接输入“5J”,注意,是大写的J,也就是shift+j。可以看到,每一组的5行信息已经合并成一行了,并且以空格分隔。其中,5表示执行后面的命令5次,J表示合并两行。这一步是基础,并不需要,按“u”,退回到第2步的状态,并按“gg”,将光标停在第一行。
- 录制宏:开始录制以a为名字的宏,“qa”,之后依次按下面的键,“5Jjq”,其中5J的作用已经解释了,j跳到第二行,q结束录制宏。
- 这时候你的光标应该在第二行,并且是normal模式,依次按下面的键,“285@a”,其中@就是shift+2,@a的意思是执行宏a,也就是执行@a共285次。这时,每组的信息已经集中到一行了。
- 其实我们的任务基本上已经完成了,下面是先转成csv格式,再导入Excel,还是直接转成html表格,都是很容易的事情了。下面的命令就不再解释了。
- :%s/ /<\td><td>/g
- :%s/^/<tr><td>/g
- :%s/$/<\/td><\/tr>/g
- 文件最前面加上<html><body><table>,文件最后面加上</table></body></html>,大功告成。(表格加线,加标题这些自己看着办吧)
btw:
当你不了解一种工具(特别是像VIM这种强悍的工具)时,你可能根本想不到活儿还可以这么干,而且干的这么漂亮。