zoukankan      html  css  js  c++  java
  • 一个VS小插件(跳出括号)

    Update: Dec.1, 2009, 重新实现了跳出括号的功能,并增加了跳入括号的功能,新版本可以在这里下载。

    通常,用 Visual Studio IDE 写程序的同学一定都会用到 Visual Assist ,这二者实乃是珠联璧合,堪称绝配。但是有一个小问题让人极其不爽,我忍了不是一天两天了,比如你想调用某个函数 foo(param) ,首先敲入函数名“foo”,再敲入一个左括号(”,这时 VA 很开心的帮你补全了另外一个右括号)”,很好。于是你在括号里面继续敲入“param”,然后准备换到下一行。但是这时问题来了,因为你大概需要先将手挪到方向键上,按一下->,然后再挪回来,输入 ";" 并回车,这样手要移来移去的,相当繁琐。当然你也可以直接输入 ")",但是这同样也是一个让人很难受的操作,我的小指对此表示严重抗议。另外在索引某个数组 bar[index],或者输入某个字符串abc的时候也会遇到这种情况。

    最近我终于对这个问题到了忍无可忍的地步,于是决定写一个插件来解决此事。折腾许久,终算是基本搞定,用起来还算顺手,感兴趣的可以在这里下载安装包和源代码。另外在此要感谢 Anders Cui 写的教程

    一.插件的用法

    a.       Tab 键以跳过插入点处右方的右结束符号,包含 ])}

    b.       Ctrl + [ 键以跳出插入点当前所在的区块。如果插入点距离当前区块的结束位置超过10行,则此命令直接将插入点下移10行。(这里的区块指的是由一对双引号、中括号或者花括号包围起来的代码块)

    b.       Ctrl + . 键以跳出插入点当前所在的区块。

    c.       Ctrl + , 键以跳入下一个区块。(这里的区块指的是由一对单双引号、中括号、大括号或花括号包围起来的代码块)

    二.实现

    没什么技术含量,请直接参考源代码。这里简单说一下跳出当前区块功能的实现。其实 VS 或者 VA 对于插入点位于哪个区块知道得一清二楚,但是它就是不告诉你,也不提供命令让你能够自由的跳转。但是我又懒得分析代码的结构,因为如果考虑到字符串中的括号、字符串中的转义单双引号、单个的双引号字符,等等诸如此类的话,情况将比较复杂。于是只好求助于VS,希望它能透露一点内幕,方法是使用Edit.GotoBrace 命令,具体是怎么使用的,大家一看代码就会明白。当然这也导致了效率不高,因此在本插件中只允许10行以内的跳转。

    在新的版本中,简单地分析了一下代码中的括号配对,详见源代码。

    三.其它

    1. 控制命令菜单项的可见性

    比如你写了一个操作文本的命令,在当前工作空间没有打开任何文本的情况下,该命令显然是不可用的。于是我希望该命令在这种情况下可以隐藏起来。在此事上我浪费了无数的时间,也Google了很多老外的帖子,最后得出的结论是:不要试图去隐藏你的命令的菜单项,那将是徒劳。

    2. 自定义图标

    自定义图标必需用16*16像素的16色或者24位色BMP图片,也可以使用透明色,只不过这里的透明色设置得比较猥琐,为 (0, 254, 0) 。我起初还以为是紫色 (255, 0, 255) ,搞了好半天。说到紫色,这里顺便再转一个笑话:

    secretGeek

    1 人喜欢此条目

    > Leon!

    Desperately need help!
    I been racking my brains about this all morning!

    Why isn't my HELLO WORLD purple?

    <FONTCOLOR='BLUE'>   <FONTCOLOR='RED'>

          HELLO WORLD! (should be purple)

       </FONT><FONT>

    S.R.

  • 相关阅读:
    CF516E Drazil and His Happy Friends
    洛谷P4228 [清华集训2017] 榕树之心
    洛谷P5404 [CTS2019] 重复
    洛谷P4229 [清华集训2017] 某位歌姬的故事
    CF1286E Fedya the Potter Strikes Back
    CF1239
    洛谷P5892 [IOI2014] holiday 假期
    AT5202 [AGC038E] Gachapon
    库默尔定理
    UOJ37 [清华集训2014] 主旋律
  • 原文地址:https://www.cnblogs.com/atyuwen/p/jmpAddin.html
Copyright © 2011-2022 走看看