【问题标题】:vim syntax match regex not working as expectedvim 语法匹配正则表达式未按预期工作
【发布时间】:2015-10-19 05:10:10
【问题描述】:

我正在试验 Vim 的语法隐藏选项,希望能回馈vim-lambdify。但是,在尝试将正则表达式传递给 syntax match 时,我看到了(在我看来)意外行为。

在我的 .vimrc 中指定以下内容时

execute "syntax match myOperator /foo\(bar\)\@=/ conceal cchar=*"
execute "hi link myOperator mySpecialOperator"
execute "hi! link Conceal mySpecialOperator"
setlocal conceallevel=1
setlocal concealcursor=c

打开以下文件时,我没有看到 foo 被隐藏:

foo
foob
foobar

我已经尝试了这个正则表达式的许多排列:什么都不转义/一切,用单引号/双引号括起来等等都无济于事。

我是否遗漏了一些明显的东西?我是否误解了语法/匹配/隐藏应该如何协同工作?

【问题讨论】:

  • 你为什么使用 exec?删除 exec 仍然会使命令工作......
  • 在第一行中,使用带双引号的execute是错误的,因为反斜杠被解释了,你应该使用单引号,或者放一些双反斜杠,或者去掉execute
  • 不幸的是,the plugin 我有兴趣扩展使用 execute "syntax match ..."

标签: regex vim


【解决方案1】:

Redditrgvim 回答了这个问题:

第一个执行字符串中的反斜杠需要转义。

/foo\\(bar\\)\\@=/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 2014-04-28
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多