有没有办法让vim显示"虚拟角色"在缓冲区中的常规模式之前/之后?

时间:2014-08-18 22:17:43

标签: vim

Vim具有listlistchars选项,使得vim在某些情况下显示“虚拟角色”(我指的是实际上不在缓冲区中的角色)。例如,您可以使尾随空格看起来像其他东西,或者添加一个可见字符来表示换行符。

我希望能够在某些常规模式之前或之后(可能是语法项目)启用某些字符的显示。类似于语法高亮,但不仅仅是改变字符的颜色/样式在缓冲区中,我想显示不在缓冲区中的额外字符。

例如,我想在出现在行尾的所有单词“:”之后显示虚拟where(冒号)。

这是可能的吗?如果是这样,那么做什么是必要的vimscript?

1 个答案:

答案 0 :(得分:3)

这听起来像是在Vim 7.3(:help :syn-conceal)中添加的隐藏功能的用例。但是,它与:set list

不同
  • 它是语法突出显示的一部分,因此您需要扩充任何现有语法(例如,通过:autocmd Syntax * ...),并且可能存在干扰
  • 您可以使用单个隐藏字符隐藏或替换一个或多个字符;所以,如果您的示例中的where之后有空格,则可以将其转换为:,但您无法添加一个虚拟角色,这对于行尾的where根本不起作用
  • 您还需要调整'conceallevel''concealcursor'选项以获得与列表类似的行为

因此,它不容易且与:set list完全一致;你是否真的需要这个功能。 (你没有说出这是为了什么,暗示着XY problem。)

对于一个完美的"实施时,您必须修改Vim的源代码,以添加额外的'listchars'选项。