Я хотел бы добавить шаблон типа .*
к аргументу определяемой пользователем команды, чтобы пользователю не приходилось вводить его каждый раз.
Вот минимальный рабочий пример для воспроизведения проблемы:
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 })
Но это не сработает, и я не мог полностью понять, почему, я считаю, что мне не хватает чего-то небольшого (и, вероятно, глупого), но может кто-нибудь указать, пожалуйста?