将以下文本视为LaTeX .tex文件的一部分:
This is some latex file, with a citation \ref{citationName} which is great
我想使用Vim的语法隐藏功能将此行转换为:
This is some latex file, with a citation [citationName] which is great
以下搜索和替换正则表达式将第一行转换为第二行::s/\v\\ref\{(\w+)}/[\1]/
但是,这是一次性文本替换,我想使用vim的语法隐藏功能,这样:
\ref{name}
的行上,则会显示原始文本\ref{name}
的行上,则用[name]
替换(隐藏)此类文本我读过:help conceal
和:help syntax
,但我完全无法解决这个问题。
这个问题
我如何使用Vim的隐藏功能,以便获得上面指定的行为?
尝试1:我确信我将无法使用上面定义的正则表达式,因为它是。但是,我可以分两部分来解决这个问题:
\ref{
隐藏字符串\\ref\{
(正则表达式:[
)}
),字符\ref{
有两个正则表达式可以找到我想要隐藏的文本,并且有我想隐藏它们的字符,我怎么能真正隐藏它们?
您可以将以下内容放入\v(\\ref\{(w+))@<=}
,将]
替换为\ref{name}
:
[name]
编辑:正如@ D.BenKnoble所说,这不是最漂亮/最聪明的方式。您可能想要查看.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
。