用 space 替换隐藏字符

Replace concealed characters with a space

我在编辑 LaTeX 文件时使用 vim 的 conceal 功能。此功能的一个例子是隐藏 textit 宏,导致

\textit{Hi there}

显示为

Hi there

。这通常很好,但这确实意味着字符不再显示在其正确的列中。我真正想要的是将所有隐藏字符替换为空格,而不是仅仅从行中删除,以便保留列号。上述情况的结果为:

        Hi there 

这可以做到吗?

您一次只能指定一个隐藏替换字符 (cchar)。所以

syn match C1 "\textit{" conceal cchar= 
"                                      ^------ single space after equal sign

将使文本:

\textit{Hi there}

看起来像:

 Hi there}
^--- space before "Hi"

如果你想用 space 替换 \textit 的每个字符,你将不得不将隐藏分成几部分(同样,每个等号后的 space):

syn match C1 contained "\" conceal cchar=                           
syn match C2 contained "t" conceal cchar=                            
syn match C3 contained "e" conceal cchar=                            
syn match C4 contained "x" conceal cchar=                            
syn match C5 contained "t" conceal cchar=                            
syn match C6 contained "i" conceal cchar=                            
syn match C7 contained "t" conceal cchar=                            
syn match C8 contained "{" conceal cchar=                            
syn match C9 contained "}" conceal                          
syn match Conceal "\textit{\|}" contains=C1,C2,C3,C4,C5,C6,C7,C8,C9        
set conceallevel=2                                                   
set concealcursor=vic