用空格替换隐藏的字符

时间:2018-04-20 02:13:52

标签: vim vim-syntax-highlighting

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

\textit{Hi there}

显示为

Hi there

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

        Hi there 

可以这样做吗?

1 个答案:

答案 0 :(得分:1)

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

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

将制作文字:

\textit{Hi there}

看起来像:

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

如果你想用空格替换\\textit的每个字符,你必须将隐藏部分分开(再次,每个等号后面的空格):

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