我正在尝试使用代码来过滤列表中的多个项目:
function! Myfilter (...)
let alltext = getline(1,'$')
for s in a:000
let alltext = filter(alltext, s)
endfor
echo alltext
endfunction
我称之为:
:call Myfilter("word1", "word2")
但是,由于s中的值被视为变量而不是文字字符串,因此存在错误。错误是:
Error detected while processing function Myfilter:
line 3:
E121: Undefined variable: word1
E121: Undefined variable: word2
整个alltext打印没有任何过滤。以下修改也不起作用:
filter(alltext, ' ' . s . ' ')
filter(mylist, 'v:val == s')
filter(alltext, 'match(v:val, s)')
问题在哪里,我该如何解决?
答案 0 :(得分:0)
显示当前缓冲区中包含所有函数参数的行
function! Myfilter (...)
let alltext = getline(1,'$')
for s in a:000
let alltext = filter(alltext, 'v:val =~ s')
endfor
echo alltext
endfunction
示例缓冲区
alpha
word1 beta word2
word1 delta
epsilon
示例通话
:call Myfilter("word1", "word2")
示例结果
['word1 beta word2']
答案 1 :(得分:0)
我找到了以下更简单的形式:
`'v:val =~ s'`