在vimscript中,我可以使用matchstr()
和matchlist()
但是如果我必须在模式中附加一个 用户提供的字符串 呢? 我怎样才能引用元字符?
答案 0 :(得分:2)
我认为没有任何东西可以做到这一点,但你可以使用一个可能足够好的魔法修饰符。假设您有以下表达式:
let pattern = '\<'.word.'\>'
如果word
是用户提供的字符串,那么(如果我理解正确的话)你想忽略其中的所有特殊修饰符。要做到这一点,使用“非常无畏模式”。通过在模式前面放置一个“\ V”,可以使模式的行为几乎像文字字符串。然后,输入“\ m”以恢复正常行为。在这种情况下:
let pattern = '\<\V'.word.'\m\>'
但请注意,这不是完全您所要求的。如果用户输入foo(*bar)
,它将正常工作,但如果它是foo(\*bar)
,则不会,因为\*
对被解释为星形修饰符。如果您不了解这些模式,请尝试:help /\V
以更好地了解魔法是如何运作的。