Vimscript是否相当于Ruby的'any?'

时间:2015-01-27 01:09:39

标签: vim lambda

我想在我的vimrc中重构这个条件:

if &term =~ "xterm" || &term =~ "screen" || &term =~ "builtin_gui"
  " do some stuff...
endif

在Ruby中,我可能会做类似的事情:

names = ["xterm", "screen", "builtin_gui"]

if names.any? { |n| &term =~ n }
  " do some stuff...
endif

我知道Vimscript没有类似Ruby块的东西,但有没有内置函数可以让我在这些方面做点什么?

2 个答案:

答案 0 :(得分:4)

=~正则表达式匹配。所以你可以使用正则表达式的全部功能。这些都应该有效:

&term =~ 'xterm\|screen\|builtin_gui'
&term =~ join(names, '\|')`

答案 1 :(得分:1)

不是真的

let names = ["xterm", "screen", "builtin_gui"]

if len(filter(names, '&term =~ v:val')) > 0
endif