首页 > 解决方案 > 在 Vim 中使用 `filter()` 后如何保留索引和值

问题描述

我将用于getline(1, '$')获取文档中的所有行列表。他们filter()通过某种表达。但我还需要保留索引(行号)以供参考。我怎么能这样做?

let lines = getline(1, '$')
filter(lines, 'EXPRESSION')

结果应该是一个列表或任何我可以参考的索引: [[1, LINE1], [4, LINE4],... [n, LINEn]]

标签: vimvi

解决方案


您可以使用v:key来获取列表的索引map(),然后v:key + 1将行号如下。

let lines = map(getline(1, '$'), '[v:key + 1, v:val]')
call filter(lines, 'v:val[1] == "EXPRESSION"')

推荐阅读