将以下文本视为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+))@<=}
)开头,字符为]
同时拥有两个正则表达式可以找到我想要隐藏的文本,并拥有想要隐藏它们的字符,我该如何真正隐藏它们?
答案 0 :(得分:0)
您可以通过将以下内容放入\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
编辑:正如@ D.BenKnoble提到的那样,这不是最漂亮/最聪明的方法。您可能需要研究Latex-Suite或filetype specific autocommands。