Vim上下文高亮显示

24

我认为标准的高亮是有用的,但在使用回调和嵌套结构进行编程时并不总是帮助。关键字和字符串无处不在,当它们以不同的颜色显示时会有所帮助,但这些颜色并不能提供有关我所在作用域的线索,也无法告诉我在词法上我在哪里。

我听说过上下文高亮,是在Douglas Crockford的一个演讲中听到的,但我想不起来url了。这个想法是突出显示作用域的词汇级别。顶层定义以color0着色,内部级别块语句以color1着色,并且每次引入新的作用域级别时都会递归重复此过程。以下是一个示例,使用一些想象的节点库。 (现在添加了一个(ish(或scheme lisp))示例)

Example. Pseudo Scheme Multi-Paren Example

这不一定是针对node或javascript的。我想知道是否有编辑器/vim插件实现了这种功能。我不知道上下文高亮是否是这个词,但我只能找到一个。在谷歌上搜索上下文高亮会显示出基于通用标记的突出显示和ConTeXt(我对此一无所知)的结果。

这存在吗?有编辑器实现了这个吗?更重要的是,我可以在vim中使用它吗?

另一个与我的问题相同,没有真正答案的问题:在任何代码编辑器中都实现了Crockford风格的上下文着色吗?


我喜欢这个。如果和否则不是同一级别,它们各自的{}应该是另一个级别吗? - gooddadmike
8
这里有一个 Douglas Cockroft 在 YouTube 上的演讲链接(https://www.youtube.com/watch?v=dkZFtimgAcM)。他在视频的约17分30秒处谈到了“上下文着色”。一个重要的区别是,他的变量是根据它们被声明的作用域进行着色,而不是根据它们出现的作用域进行着色。 - Matthew Strawbridge
我知道的最接近的东西是彩虹括号,它是一个有点瑕疵的插件,可以根据嵌套级别为您的括号着色(我使用它)。 - Andy Ray
@AndyRay 我在vimscripts中找到了它,但如果您提供一个链接,对其他人会很有帮助。顺便说一句,非常感谢! - user1621465
1
@G. Kayaalp。彩虹括号链接 - Christopher Bottoms
显示剩余2条评论
3个回答

2

我也没找到类似的东西,所以我自己写了一个:

rainbow_levels.vim:一种不同的代码高亮方法。

当然,这只是一个非常简单的实现,仅考虑缩进级别而不是真正的上下文,但它能够胜任工作;D


1
并非完全符合您的要求,但代码折叠是一个强大的功能,可以让您集中关注代码的特定级别。Vim支持折叠http://vim.wikia.com/wiki/Folding 缩进指南也非常方便,可聚焦于代码的特定部分。Sublime文本编辑器有这个功能(http://sublimetext.userecho.com/topic/98136-indent-guide-highlighting-changed/)
我看到了这个适用于 Vim 的插件(https://github.com/nathanaelkane/vim-indent-guides),它似乎也可以实现相同的功能。
您可能会创建一个语法高亮器,使用此插件的缩进逻辑来更改颜色方案。您描述的更复杂,需要不仅仅基于缩进工作,而像语言解析器一样运行。

谢谢@hwatkins,但这并没有回答我的问题。但我同意最后一段。 - user1621465

0

现在在VIM中有一个名为vim-js-context-coloring的插件。我只是稍微试用了一下,还没有特别深入地了解,但它看起来很有前途!

注意:您需要安装npm,然后在安装插件的目录中运行npm install。遗憾的是,当我安装它时忘记阅读说明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接