

VIM学习笔记 脚本-字典-实例(Script-Dictionary-Example)
source link: http://yyq123.blogspot.com/2021/10/vim-script-dictionary-example.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

可以将字典(Dictionary),理解为存储了关于键-值的成对的二元数组。以下将演示在脚本中利用字典数据结构的实例。
删除重复行
在文本排序(sort)章节中,使用以下Vim内置的排序命令,可以去除文件中的重复行,同时原始行的顺序也将随之改变。对于重复的多行,将仅仅保留第一行,而其它的行将被删除。
:%sort u
创建自定义函数
以下将自定义Uniq()函数,利用字典数据结构来去除重复行,同时保留原始的行顺序。
Source code: Uniq.vim
首先,新建一个空字典"have_already_seen"用于遍历指定区域内的所有行;而不重复的行将被加入到字典"unique_lines"中。
因为字典结构不会存储键为空的项目,所以在循环语句中,将为每行内容新增前导字符'>',以确保行不为空。
函数将检查行是否已经作为键存在于字典"have_already_seen"中。如果已经存在,就忽略此行;如果不存在,则被加入字典"unique_lines"中。最后,字典"unique_lines"将仅仅包含所有唯一的行,并以原始的顺序排列;而重复的行,则会被删除。
调用自定义函数
将以上代码添加到vimrc配置文件之后,使用以下命令,可以针对整个文件执行函数:
:%call Uniq()
也可以创建快捷键,针对指定的行范围(如可视化模式下选中的行)执行函数:
vmap u :call Uniq()<CR>
Recommend
-
45
从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点. 为了便于描述,我把上面的那条线路称为线路1,下面的称为线路2. 思路
-
13
Fluent Python 笔记 —— 字典与集合 2020-11-08 ...
-
10
为什么需要数据字典通过Navicat等数据库管理工具,我们也能看到数据表的结构设计,但是,如果我们把全部的数据表的结构设计都做成可在线预览的,会不会更加清晰明朗呢,而且也更加容易对比发现问题和及时优化,更有效率。生成数据字典的方式
-
9
dotnet C# 字典 Dictionary 和 Hashtable 的性能对比如果没有特别的需求,请使用 Dictionary 而不是 Hashtable 原因是 Dictionary 的性能更好,本文将告诉大家 Stephen Toub 大佬的评测 从 2021 的 6 月 23 日,在 WPF 仓库里面,开始看到了性...
-
10
machine learning笔记:SVD与字典学习 发表于 2020-02-12 | 更新于: 2020-02-14 | 分类于 人工智能 |
-
11
执行单条命令 将所有未标志为“DONE”的行,都在行尾标注“TODO”: :g!/DONE/s/$/ TODO/ :v/DONE/s/$/ TODO/ ...
-
9
匹配空格 ♦ 删除所有行首的空格: :%s/^□□*\(.*\)/\1/ 其中,使用^□□*查找行首的一个或多个空格;而\(.*\)将行中的其它内容捕获为组;在替...
-
9
可以将字典(Dictionary),理解为存储了关于键-值的成对的二元数组。如果你知道了键,就能快速地查找它对应的值。 创建字典 使用以花括号包含逗号分隔的键-值...
-
8
Google App Engine Datastore Example : Dictionary Application Updated: April 07, 2015...
-
4
扫一扫,转发文章 dict 类型是 Python 语言的基石。正因为 dict 类型至关重要,Python 对它的实现做了高度优化。性能出众的原因在于使用了散列表(或者叫哈希表),另外,set 类型也依赖散列表。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK