Vim script で条件にマッチする要素を取得する
いわゆる find 的な機能。
一応、組み込み関数で index() というのがあるんですが、これだとリストにしか対応していない & 式が渡せないという欠点があります。
echo index(["mami", "homu", "mado"],"homu") " => 1 " 式は渡せない echo index(["mami", "homu", "mado"],'v:val =~ ''^h''') " エラー " echo index(({"homu" : 2, "mami" : 5, "mado" : -42}), "homu")
こういう場合は filter() を使用すると便利です。
echo filter(["mami", "homu", "mado"], 'v:val =~ ''^h''') " => ["homu"] " 最初にマッチした値を取得したい場合 echo get(filter(["mami", "homu", "mado"], 'v:val =~ ''^h'''), 0, "") " => "homu" echo filter({"homu" : 2, "mami" : 5, "mado" : -42}, 'v:key =~ ''^m''') " = > {'mami': 5, 'mado': -42}