我想在模式前加上一个类似于 .*
到用户定义的命令参数中,这样用户就不用每次都输入这个参数了。
这里有一个最小的工作例子来重现这个问题。
fun Fruits(A, L, P)
let l:valid_fruits = ['apple', 'peach', 'orange', 'mango', 'blackberry', 'strawberry', 'blueberry']
let l:filtered_fruits = filter(l:valid_fruits, { idx, val -> val =~ a:A })
return join(l:filtered_fruits, "\n")
endf
command! -complete=custom,Fruits -nargs=1 Fruits :echom(<f-args>)
有了这个,我可以输入 :Fruits b
然后点击Tab键,显示完成选项的 blackberry
和 blueberry
,都是好的。但我想要一个行为,我做 :Fruits berry
敲击标签显示 blackberry
和 blueberry
和 strawberry
. 获得这种行为的一种方法是在前缀为 .*
在命令行参数中,像这样。:Fruits .*berry
.
所以,我天真地去更新了我的过滤功能,就像下面这样。
let l:filtered_fruits = filter(l:valid_fruits, { idx, val -> val =~ '.*'.a:A })
但这是行不通的,我不明白为什么,我相信我漏掉了一些小东西(& 可能很傻),但有人能指出来吗?