如何在用户命令的命令行参数中加入'.*'这样的模式。

问题描述 投票:1回答:1

我想在模式前加上一个类似于 .* 到用户定义的命令参数中,这样用户就不用每次都输入这个参数了。

这里有一个最小的工作例子来重现这个问题。

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键,显示完成选项的 blackberryblueberry,都是好的。但我想要一个行为,我做 :Fruits berry 敲击标签显示 blackberryblueberrystrawberry. 获得这种行为的一种方法是在前缀为 .* 在命令行参数中,像这样。:Fruits .*berry.

所以,我天真地去更新了我的过滤功能,就像下面这样。

let l:filtered_fruits = filter(l:valid_fruits, { idx, val -> val =~ '.*'.a:A })

但这是行不通的,我不明白为什么,我相信我漏掉了一些小东西(& 可能很傻),但有人能指出来吗?

vim neovim
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.