Regex 维姆和乳胶。“如何隐藏”\参考{name}";作为「;[姓名]”;在Vim中使用语法隐藏

Regex 维姆和乳胶。“如何隐藏”\参考{name}";作为「;[姓名]”;在Vim中使用语法隐藏,regex,vim,syntax,latex,Regex,Vim,Syntax,Latex,将以下文本视为LaTeX.tex文件的一部分: 这是一个latex文件,带有一个引文\ref{引文名},非常好 我想使用Vim的语法隐藏功能将这一行转换为: 这是一个latex文件,带有引文[引文名称],非常棒 以下搜索和替换正则表达式将第一行转换为第二行::s/\v\\ref\{(\w+)}/[\1]/ 但是,这是一个一次性文本替换,我想使用vim的语法隐藏功能,例如: 如果光标位于包含\ref{name}的行上,则会显示原始文本 如果光标不在包含\ref{name}的行上,则该文本将被[n

将以下文本视为LaTeX.tex文件的一部分:

这是一个latex文件,带有一个引文\ref{引文名},非常好

我想使用Vim的语法隐藏功能将这一行转换为:

这是一个latex文件,带有引文[引文名称],非常棒

以下搜索和替换正则表达式将第一行转换为第二行:
:s/\v\\ref\{(\w+)}/[\1]/

但是,这是一个一次性文本替换,我想使用vim的语法隐藏功能,例如:

  • 如果光标位于包含
    \ref{name}
    的行上,则会显示原始文本
  • 如果光标不在包含
    \ref{name}
    的行上,则该文本将被
    [name]
    替换(隐藏)
我已经通读了
:help隐藏
:help语法
,但我完全无法解决这个问题

问题

我如何使用Vim的隐藏特性,以获得上面指定的行为

尝试1: 我相信我将无法使用上面定义的正则表达式,因为它是。但是,我可以将问题分为两部分:

  • 用字符
    [

  • 隐藏
    \ref{
    前面的字符串
    (花式正则表达式:
    \v(\\ref\{(w+))@您可以将
    \ref{name}
    替换为
    [name]
    ,方法是将以下内容放入
    .vimrc

    au VimEnter * syntax region Statement start='\\ref{' end='}' transparent contains=myStart,myEnd
    au VimEnter * syntax match myStart '\\ref{\ze\w\+' contained conceal cchar=[
    au VimEnter * syntax match myEnd '\(\\ref{\w\+\)\@<=\zs}' contained conceal cchar=]
    
    au VimEnter * hi! link Conceal Statement
    au VimEnter * set conceallevel=2
    
    au-VimEnter*语法区域语句start='\\ref{'end='}'transparent contains=myStart,myEnd
    au VimEnter*语法与包含的myStart'\\ref{\ze\w\+'匹配=[
    
    au VimEnter*语法匹配myEnd'\(\\ref{\w\+\)\@您可以将以下内容放入
    .vimrc
    中,将
    \ref{name}
    替换为
    [name]

    au VimEnter * syntax region Statement start='\\ref{' end='}' transparent contains=myStart,myEnd
    au VimEnter * syntax match myStart '\\ref{\ze\w\+' contained conceal cchar=[
    au VimEnter * syntax match myEnd '\(\\ref{\w\+\)\@<=\zs}' contained conceal cchar=]
    
    au VimEnter * hi! link Conceal Statement
    au VimEnter * set conceallevel=2
    
    au-VimEnter*语法区域语句start='\\ref{'end='}'transparent contains=myStart,myEnd
    au VimEnter*语法与包含的myStart'\\ref{\ze\w\+'匹配=[
    
    au VIMCENTER*语法匹配myEnd'\(\\ref{\w\+\)\@您可能会有更多的专家答案,您可能会有更多的专家答案,这些自动命令可能会更好地作为文件类型事件,甚至是ftplugin的一部分。这些自动命令可能会更好地作为文件类型事件,甚至是ftplugin的一部分