2011-06-28 44 views
6

我遇到了这个问题: https://softwareengineering.stackexchange.com/questions/87077/how-can-a-code-editor-effectively-hint-at-code-nesting-level-without-using-inde 并认为Vim可能能够做一些类似的插件。Vim中的替代缩进显示

我相信缩进级别可以用一个符号(GUI中的图标,带有高亮的文字)表示。我不确定的部分是显示没有缩进的行。有谁知道,这是可能的和/或你会怎么做?

这个问题不在于是否需要以这种方式显示缩进级别;但是如何在Vim中完成它。

回答

3

您可以使用7.3中新增的conceal功能。

这里是做大致的功能了文章的描述(对位;占标签,而不是将是一个极其普通的加法):

function! IndentationHeatMap() 
    set conceallevel=1 
    for i in range(1,9) 
     let indentation = repeat(" ", &sts * i) 
     exe 'syntax match NonText "^' . indentation . '" conceal cchar=' . i 
    endfor 
endfunction 

一个解决方案更贴近您要求可能使用conceal什么隐藏所有前导空格与

syntax match NonText "^\s\+" conceal

,然后用signs提供指标BAS编辑自定义计算。

注意:NonText在这些语法命令中是一个任意的高亮组。

+0

谢谢你的完美。之前不知道隐藏功能。 –

0

看看这些插件:Indent GuidesIndentHL 都有截图。

+1

这些与我想要复制的是相反的。我试图不在文件本身显示缩进;而是将所有文本排列在最左边的列上。然后在vim的“符号”列中使用缩进级别的固定宽度指示符。 –