1

我正在尝试创建一个脚本来检测选择中不同字符的数量。体育

a = 4  (the character "a" is 4 times in the selection)
b = 2
e = 10
\ = 2

等等。
为了获得这个,我创建了一个带有子列表的列表,如下所示:
[['a', 1], ['b', 1], ['e', 1], ['\', 1]] --> 等
(a = 字符 // 1 = 在文本中找到字符的次数)

我不知道的是:

  • 如何在子列表中搜索?pe 我可以搜索列表中是否有“e”或“\”?
  • 当匹配“e”时,如何在“e”后面的数字中添加“1”?
    [['e', 1]] --> [['e', 2]]
  • 以及如何使用正则表达式在子列表中搜索并在回显命令 pe search [af] 中回显它并获得此输出:

    a = 1
    b = 1
    e = 2

    c、d、f 在列表中找不到,必须跳过。

顺便说一句...有谁知道我在哪里可以找到关于子列表的好文档?
(我在 vim 文档中找不到关于子列表的太多信息)。

4

1 回答 1

3

如果我正确理解您的问题,正确的数据结构是将字符映射到出现次数的字典,而不是列表。

let occurrences = { 'a': 1, 'b': 1, 'e': 1, '\': 1 }

您可以通过 来检查包含情况has_key('a'),并通过 来增加let occurrences['a'] += 1。要打印结果,请使用

for char in keys(occurrences)
    echo char occurrences[char] "times"
endfor

您可以使用字典上的强大功能map()filter()例如,仅包含字符 af:

echo filter(copy(occurrences), 'v:key =~# "[a-f]"')

阅读更多:help Dictionary

于 2012-05-21T08:50:57.663 回答