Vim(gVim)对排序的妙用
浏览:4221次 出处信息
前段时间有博友在群里问了一个关于vim排序的问题,因为时间问题一直没帮忙解决,今天时间正好空出来,就帮忙搞了一下。
原文的问题如下:
vimuser 说: 2012年03月1日 于 5:04 下午 (编辑) 今天折腾了一下午,研究vim的排序,看了教程和搜索了一些文档,还是没弄明白,vim的正则表达式跟一般的又不一样,来请教下博主。 |1 | 11 | 111| 1111| |2 | 22 | 222| 2222| 要根据第3个|和第4个|之间的列进行排序该如何写命令呢?
其实之前也只是简单的用过vim的sort命令,没有想过vim是否能完成如此复杂的排序,不过抱着试试看的态度,我看了一下sort的描述(:h :sort),其中一段话如下:
:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] When /{pattern}/ is specified and there is no [r] flag the text matched with {pattern} is skipped, so that you sort on what comes after the match. Instead of the slash any non-letter can be used. For example, to sort on the second comma-separated field: :sort /[^,]*,/
翻译过来就是,sort确实可以指定跳过的字段,也就是说,我们只要能通过正则把
|1 | 11 | |2 | 22 |
这一部分跳过就可以了~~
这部分的正则表达式是:
1 |
|[^|]\\+|[^|]\\+\\s* |
所以最终的sort命令如下:
1 |
:sort /|[^|]\\+|[^|]\\+\\s*/ |
原文给的例子不好看效果,我们改成如下的例子:
|1 | 11 | 222| 1111| |2 | 22 | 111| 2222|
调用:sort命令的结果是和原来的样子一致的,而调用我们的新命令的结果是:
|2 | 22 | 111| 2222| |1 | 11 | 222| 1111|
建议继续学习:
- vim几个小技巧(批量替换,列编辑) (阅读:35920)
- 简明Vim练级攻略 (阅读:20720)
- Vim下的代码自动补全和代码跳转阅读 (阅读:14358)
- 为什么要用 Emacs/Vim,而不是任何其他编辑器 (阅读:12144)
- 如何使用1M的内存排序100万个8位数 (阅读:10901)
- 快速排序(Quicksort)的Javascript实现 (阅读:10089)
- 在vim(gvim)中运行终端(对,你没有看错,我也没有写反) (阅读:9345)
- vim入门,进阶与折腾 (阅读:9175)
- 腾讯-1亿个数据取前1万大的整数-题解答 (阅读:9042)
- 让vim在终端下的配色亮起来! (阅读:8567)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:关于Linux共享库的一点儿知识
后一篇:python标准库和第3方库的介绍 >>
文章信息
- 作者:Dante 来源: Vimer
- 标签: gVim Vim 排序
- 发布时间:2012-03-11 22:20:35
建议继续学习
近3天十大热文
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [55] Oracle MTS模式下 进程地址与会话信
- [54] 如何拿下简短的域名
- [53] android 开发入门
- [52] Go Reflect 性能
- [51] 图书馆的世界纪录
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑