为括号对添加颜色

德斯·克里斯德森

在VisualStudio中处理深度嵌套的括号时,很难确定哪些括号匹配,哪些不匹配。对于色盲或其他视觉疾病患者来说,问题可能更严重。通过对括号对进行彩色编码,我们使这一点变得更容易。

图像7

目前,各种IDE和编辑器都提供了此功能,通常通过扩展实现。例如维亚斯福拉VisualStudio的扩展提供此功能已有多年了。所有这些实现的有趣之处在于它们是如何以稍微不同的方式完成任务的。诚然,他们都给括号对上色,但他们的方式不同,其中许多提供了额外的功能和选项。

A类功能请求Visual Studio开发人员社区上也开始要求彩色括号对,所以请投票和评论如果你同意的话。

那么,随着兴趣的增加和多种可行的解决方案的出现,对于VisualStudio用户来说,正确的实现应该是什么样的呢?

让我们做一个实验来找出答案。

实验

我们从一个扩展开始,以启动实验。我们称之为彩虹支架第一次迭代为花括号、方括号和括号添加了基本的颜色(参见上图)。

图像主题颜色 图1:浅色和深色主题中的彩色括号对

它有四种独特的颜色,可以循环使用,并根据需要多次重复使用。颜色同样适用于浅色和深色主题,并且可以在字体和颜色选项页面。

图像选项

您可以从编辑->高级顶级菜单。或者使用键盘快捷键Ctrl+Shift+9执行切换彩虹支架命令。

“图像”菜单

接下来的步骤

如果您对此功能感兴趣,请安装彩虹支架扩展并带它去兜风。确保在GitHub问题跟踪程序,也可以随意发送拉请求。这个功能请求票证这是一个分享你的评论和想法的合适地方,所以请务必在那里投票和发表评论。

你喜欢这样的社区实验吗?请在下面的评论中告诉我们。

41条评论

讨论结束。登录以编辑/删除现有评论。

  • 希特斯·戴维 9

    我建议垂直结构引导线也应使用与开/关“花”括号相同的彩虹颜色,因为这将为代码块增加更多清晰度。目前,它呈现灰色,这可以通过强制它使用与打开/关闭花支架相同的颜色来改善。

    想象一下,一个函数的代码长度运行多个页面,其中包含许多IF{…}ELSE IF{..}ELSE{..}块;有了彩虹色的垂直结构指导线,就很容易知道代码块级别的哪一部分正在进行工作,而无需上下滚动。

  • 朱利亚诺·贡卡尔维斯 0

    很酷的扩展,立即安装。当我们在有大量嵌套层的讨厌的遗留代码中导航时特别有用。

    虽然这个名字有点误导人……正如我们所知,彩虹并不是只有4种颜色……我希望这个名字没有被选为某种含蓄的美德信号,或者不会被这样使用。称之为“彩色大括号”不仅更有意义,而且对用户来说也更直观,尤其是在导航菜单以查找设置时。

      • 罗杰·沃马克 0

        JetBrains真的很好,一直使用它,我继承了一个项目,有时有10级以上的缩进超出屏幕,这是一个真正的救命稻草。

  • 拉克伦采摘 0

    vscode做到了这一点,但我发现它只在多组括号时有用同类的存在在同一条线上。由于嵌套/内联方法调用、强制转换、插入式数学表达式等原因,这主要发生在括号中。

    对于在自己的行上的括号,缩进(尤其是使用垂直辅助线)足以让我理解块的开始和结束位置。同样,对于索引器的方括号,我从来没有遇到过问题,因为即使它们嵌套在一堆其他括号中,那些外部括号也往往是括号,而不是额外的方括号。因此,考虑到我(个人)并没有在那里遇到混淆问题,我发现看似不一致的语法着色比其他任何东西都更容易分散注意力。

    这就是说,我在这里采用的是一种非常以C#为中心的观点,因此它在其他语言中可能更有用,但对我个人来说,这并不是一个我完全喜欢的功能。除非它变得更智能/更可配置,否则它可能最终会被我禁用(当然,这并不意味着它对其他用户没有价值。)

    • 拉克伦采摘 0

      我刚刚注意到,在查看功能请求线程时,有一个额外的Mads屏幕截图,显示您可以单独禁用花括号和方括号。我认为这可能解决了我这里的大多数问题👍

      • 漆膜灯 0

        我告诉你,奶油蛋糕王,所以方形内裤也有包里的,所以可以说是指旋头发的那个,现在仍然这样,但在Jr.高中时只有背带。所以,赶快把它交给她快速的[老鼠]在摇篮里。!!!!

  • 霍耀元 0

    我想为括号启用颜色,但不想为其他括号启用颜色。花括号通常格式良好且对齐,而嵌套括号则是一个问题。

    • 德斯·克里斯德森Microsoft员工 0

      您可以只为括号启用它。只需从工具->选项对话框中禁用其他括号类型

    • 内森·费雷拉 0

      Viasfora支持多种语言,而不仅仅是C#……。。您可以启用/禁用每种语言。考虑先使用扩展。

  • 格热戈兹·贾米奥·考斯基(Grzegorz Jamiołkowski) 1

    你的VS扩展太棒了!感谢您为VS开发者社区所做的一切!

  • 米查·利杰斯基 0

    我建议查看Visual Studio代码的括号着色设置,并进行类似的设置(编辑器->括号对着色、编辑器->指南:括号对等)。
    我个人希望每个括号类型都有独立的颜色池。
    同样,用匹配的颜色在括号内画下划线也很有用。

  • 艾福特 1

    角括号将是一个受欢迎的补充。

  • 施巴姆 0

    我还建议每个括号类型都有独立的颜色池。在我看来,默认的颜色太暗/太浓了。他们把注意力过分吸引在自己身上。

  • 利布提 0

    你知道我喜欢你的工作,但为什么要花时间创建一个Viasfora的克隆,它做得很好。有什么是你想补充的,但他们没有做的吗?

    • 德斯·克里斯德森Microsoft员工 1

      此扩展的目的是找出如何最好地设计此功能,以便将其构建到Visual Studio中。通过给开发人员一个扩展,让他们打开bug并给出反馈,这就是我们在这里进行的试验。我们现在可以与社区协作,而不是询问用户想要什么,来衡量和迭代,以从实际使用中确定最佳设计。

    • 基尔桑 0

      有什么是你想补充的,但他们没有做的吗?
      已经:在此扩展中,您可以启用\禁用花括号\括号\方括号的着色。
      Viasfora做不到:https://github.com/tomasr/viasfora/issues/151

    • 迈克尔·泰勒 2

      你读了这篇文章吗?他们在第二段中逐字提到了这一延伸,并附有链接。

      集成通用功能而不是依赖第三方的重要性由来已久。只是作为一个开始
      –VS开发人员对代码有更好的了解,以及可以进行哪些优化以使其更快/更稳定。
      –帮助识别扩展编写中可能需要公开其他端点的挑战。
      –有了MS支持,它与VS版本紧密相连,因此当第三方开发人员停止支持、不更新代码等时,您不会“丢失”功能。
      –许多公司都有禁止使用非MS软件的政策(原因我不明白)。
      –除非您知道扩展,否则您不太可能找到它来使用它,因为市场并不容易找到这些扩展。
      –在我看来,安装扩展仍然是一个高级概念,而不是初学者或中级开发人员所做的。

    • Daite Dve公司 0

      Viasfora的问题:
      1.遥测。在任何情况下都不可能!我用什么VS或我喜欢什么颜色与他们无关。
      2.作为任何一个“小”扩展,它变成了BLOATWARE,添加了一些非常愚蠢的特性(比如“结束标记的高亮显示不同颜色”——真的吗?!!你说的是“改进”吗??)
      3.理想情况下,如果扩展只完成一项工作并且做得很好。如果包含数十个功能,则每个功能都必须是可选的(关闭)。不确定Viasfora有没有。
      4.Mads的扩展将集成到VS中。当然这是高质量的代码,不需要整整一个月的“代码检查”。

  • 查克·瑞恩 0

    当我将光标放在括号上时,我更喜欢突出显示匹配的括号。

    UI已经足够卡通化了,我不需要/不想让更多的颜色分散我的注意力。

    • 丹尼尔·史密斯 0

      我同意。视觉上的杂乱有时会让人不知所措。这是一个非常有用的功能,但我更希望它能够快速、轻松地打开/关闭(例如通过工具栏按钮)。

      • 鲍勃·宾厄姆。 0

        文章称,Control-shift-9可以打开和关闭它。

    • 迈克尔·泰勒 0

      我倾向于同意,除非你在意,否则它不应该引起人们的注意。然而,我认为,这个功能最常见的用例是在代码库中,你在一个屏幕上看不到整个代码块,或者代码太乱了,你找不到它。在“找不到”的情况下,我认为把鼠标悬停在它上面,使它突出显示会很好。

      但在相关标点符号不在同一屏幕上的情况下,上下滚动会导致您失去焦点,这是没有用的。因此,任何与上下文相关的东西都需要处理这个常见的案例。也许你“点击”标点符号,它会突出显示相关的标点,这样你就可以上下滚动找到它。或者,也可以右键单击并“跳到”相关的(如果有的话)。另一种有用的方法是允许您向上/向下滚动,当您越过可见的页面边界时,它会转换为“查看定义”模式,在该模式下,您可以看到您关心的内容和滚动的区域,但会跳过其间的所有内容。

  • 约翰·多伊 0

    干得好!!!我一定会用的!!!👍😍💖

  • MgSam公司 0

    我认为这是一个好主意。虽然我认为你们选择的默认颜色太相似了。4种颜色中有3种是微红色(橙色、红色、粉红色)。当然需要更好的默认值。

  • 内森·费雷拉 0

    他们忘记了一些事情,为泛型中的<和>添加了颜色选项。

  • 哈米德 0

    我用了几天,我非常喜欢它,除了默认的红色太多,我把它改成了柔和的蓝色。

    • 漆膜灯 0

      那会是软圆顶吗?

  • 穆金明 0

    从名称空间到通过类的函数,默认使用三个括号对
    四个层次是不够的。七个级别都可以
    还是从四级开始

  • 设计师 0

    对于括号嵌套非常有用。

    必须承认默认颜色不是很好,但很容易更改。切换到一个更具视觉差异的集合,级别之间的对比度更高,解析也更容易。

    很高兴看到这是一个受支持的功能。一旦将尖括号和代码块的垂直标记添加到功能列表中,它应该涵盖我拥有的任何用例。一定要计划继续使用这个。

  • 莉莲·普罗达尼奇 0

    这将大大简化代码的阅读!!希望能尽快使用!

  • J.拉里·奥尔特曼 0

    作为一个色盲个体说话。它实际上使我的情况更糟。我只看到很少颜色的亮度/对比度。颜色越深,就越暗,逐渐变成灰色。我可以看到绿色到亮橙色范围内的颜色,但红色和深蓝色要么不存在(红色),要么不存在(深蓝色)。我把它关掉了,至少黑白效果不错。

  • 布莱恩·汤普森 0

    VisualStudio始终具有突出显示一个大括号以突出显示匹配大括号的功能。(在我的安装中有点不稳定,但基本上可以工作)。
    所以:如果编码器突出显示了一个大括号,为什么不显示一个上下文菜单来添加这种颜色——并在不再需要时将其关闭。这应该让每个人都高兴。

  • 彼得·斯 0

    最重要的特性之一,当然也是我最需要的特性之一是为角括号着色,这是在执行元编程魔术时用于深度嵌套的C++模板的。我认为基于文本分析的朴素实现相当困难,因此没有任何扩展提供此功能。微软请实现它!

  • Daite Dve公司 0

    这是一个很酷的扩展,谢谢Mads!但我只留下了括号来突出显示(因为这是您需要帮助时的一种情况)。作为一种选择,可以在成对的括号之间看到一些下划线(以便更容易捕捉括号中的表达式部分)。

    建议2:我将第一种颜色高亮显示为黑色,所以当您只有一个括号时,它们看起来就像普通代码。无需将代码转换为鹦鹉学舌。🙂

反馈usabilla图标