前言

Visual Studio的代码折叠功能非常好用,#region #endregion 这个词连搜狗的词库里面都出现了(不含'#'号),可见使用频率很高,但是他不支持js的代码折叠 : ( 最近Ext用得比较多,一写就是上百行JS代码,非常不方便,想着自己写个扩展或插件什么的,意外搜到了下面的文章,已经用宏来实现了,本文可以理解为该文的简单译本,注意宏代码部分我有所改动 : )

文章

1.      Using #region Directive With JavaScript Files in Visual Studio

环境

Microsoft Visual Studio 2008

正文

1.      打开宏资源管理器:视图 -> 其他窗口 -> 宏资源管理器

  

2.      创建一个新模块

  

  3.  编辑宏:  选中模块 -> 右键编辑

Option Strict Off
Option Explicit Off

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Imports System.Collections

Public Module JsMacros

Sub OutlineRegions()
        Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection

Const REGION_START As String = "//#region"
        Const REGION_END As String = "//#endregion"

selection.SelectAll()
        '农民伯伯 --- 自动为"//#endregion"结束的代码添加最后一行,不然出错
        If selection.Text.EndsWith(REGION_END) Then
            selection.EndOfLine()
            selection.NewLine()
            selection.SelectAll()
        End If

Dim text As String = selection.Text
        selection.StartOfDocument(True)

Dim startIndex As Integer
        Dim endIndex As Integer
        Dim lastIndex As Integer = 0
        Dim startRegions As Stack = New Stack()

Do
            startIndex = text.IndexOf(REGION_START, lastIndex)
            endIndex = text.IndexOf(REGION_END, lastIndex)

If startIndex = -1 AndAlso endIndex = -1 Then
                Exit Do
            End If

If startIndex <> -1 AndAlso startIndex < endIndex Then
                startRegions.Push(startIndex)
                lastIndex = startIndex + 1
            Else
                ' Outline region 
                selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)
                selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
                selection.OutlineSection()

lastIndex = endIndex + 1
            End If
        Loop

selection.StartOfDocument()
    End Sub

Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer)
        Dim lineNumber As Integer = 1
        Dim i As Integer = 0

While i < index
            If text.Chars(i) = vbCr Then
                lineNumber += 1
                i += 1
            End If

i += 1
        End While

Return lineNumber
    End Function

End Module

    保存即可。这里可以省去新建宏的步骤,他会根据代码自动给你生成一个宏的。

    注意我加的代码段,如果不加,并且你的JS最后一行为#endregion,宏将报错,显示“值不在预期的范围内”。

  4.  设置快捷键

  

    4.1  工具 -> 选项 - > 环境 -> 键盘

    4.2  在显示命令包含下面的文本框中输入宏名outli,不用输全,下面能显示你新建的宏

    4.3  点一下 按快捷键 下面的文本框, 然后自定义快捷键组合,我定义的是Ctrl+M,Ctrl+J,点分配(别忘了!),点确定。

  5.效果

    5.1  输入代码:


//aasdsadsad

//#region
//#endregion

    5.2  快捷键Ctrl+M,Ctrl+J启动宏,能看到系统的右下角显示可爱的小方块在转动,js编辑框显示效果如下:

    

    5.3  之后就可以用快捷键Ctrl+M,Ctrl+L来[展开/折叠]代码了,注意关闭之后重新打开需要再启动一次宏,展开效果如下:

    

结束

  想到不如做到,但做之前要是能先Google一下也许能事半功倍: )

让Visual Studio 也支持JS代码折叠 [ Visual Studio | #region | #endregion ]相关推荐

  1. 让Visual Studio 也支持JS代码折叠 —— 续 [ Visual Studio | Js | ScriptOutline | SmallOutline ]...

    前言 上文让JS代码折叠的功能能用了,本文将对代码继续改进以期更好用.更实用,随后有介绍Visual Studio JS方面的几个插件. 文章 1.      VS2003折叠代码的Micro 2.  ...

  2. html region 折叠,js代码折叠的方法//#region 代码 //#endregion

    //#region zTree配置数据 var setting = { async: { enable: true, url: GetUrl('/Dept/GetDeptTree'), dataFil ...

  3. wxml代码支持js代码吗_如何取胜:代码支持者的建议

    wxml代码支持js代码吗 I had the honor of asking three of the world's most famous software engineers six ques ...

  4. 支持js代码的博客有哪些?

    1.支持js代码的博客谷歌博客, 雅虎奇摩,博客大巴,jimdo博客,和讯博客要等级(230000分). 2.现在新浪博客怎么才能有效的使用js呢 在新浪博客放广告,现在网络上主要流行的两种方法,这里 ...

  5. 【Chrome】图片批量下载扩展zzllrr Imager小乐图客V1.4 (支持正则表达式、自定义JS代码、自定义引擎、多网站取图规则)...

    小乐图客 - Chrome浏览器图片批量下载工具,升级至V1.4 该版本实现的功能: 1.右下角集成众多网站引擎(相似图片搜索.图片搜索.网页搜索.图片上传等等). 2.选项中增加各类设置的重置.导入 ...

  6. 使用Visual Studio宏来自动生成代码 [ Visual Studio | 宏 | 自动生成代码 ]

    前言 宏的定义:是组合到一起形成一个命令以自动完成某项任务的一系列命令和指令.(MSDN) 在使用Visual Studio宏实现JS折叠功能的时候就想过用它来实现代码自动生成,有了前面的基础,实现起 ...

  7. vscode自动格式化不符合eslint_VsCode(Visual Studio Code)格式化代码符合EsLint

    利用Visual Studio Code ESlint插件,实现自动格式化代码 步骤一:安装ESlint插件=>点击Extensions或者Ctrl+Shift+X=>搜索ESlint=& ...

  8. 宇宙第一 IDE Visual Studio 2019 支持 C++ 和 Python 了!

    图来自官网 作者 | Peter Bright 译者 | 弯月 责编 | 伍杏玲 出品 | CSDN(ID:CSDNnews) [CSDN 编者按]根据PYPL 2019年4月最新的IDE指数榜单,在 ...

  9. Visual Studio的Node.js插件:NTVS 1.0正式发布

    NTVS是Node.js Tools for Visual Studio的缩写,它是Visual Studio 2012 和 Visual Studio 2013 为Node.js开发提供的一款免费. ...

最新文章

  1. 输出程序运行的时间(精确到微秒)
  2. Python 工匠:在边界处思考
  3. 测试简易混沌振荡电路一些因素的影响
  4. jquery.inputmask.js 输入框input输入内容格式限制插件
  5. python标准库os的方法_Python中标准库OS的常用方法总结大全
  6. Qomolangma实现篇(四):基本特性增强与多投事件系统
  7. 千兆网综合布线系统的线缆选型
  8. (03)FPGA发展前景
  9. 数据库:mysql内置功能-函数
  10. android studio降版本,Mac下Android Studio完美从2.2.2降级到2.1.3正式版方案
  11. 管理感悟:派谁进行技术合作
  12. 软件著作权个人申请全套攻略
  13. 随身WiFi刷debian固件
  14. 数据加速器 GooseFS 1.3.0 版本正式发布
  15. ​Android动态加载so~
  16. 面向对象程序设计课程设计:利用决策树方法判定西瓜质量
  17. java date只保存年月日_java date 只保留年月日
  18. 【Redis】Redis高可用之Cluster主从模式详解(Redis专栏启动)
  19. 赫夫曼树及求解最小WPL的实现
  20. 运维工程师如何从月薪 5K 到 50K?

热门文章

  1. Arduino可穿戴教程之第一个程序——选择端口(三)
  2. Swift3.0语言教程获取字符串长度
  3. ​网页图表Highcharts实践教程之标签组与载入动画
  4. python3中unicode怎么写_详解python3中ascii与Unicode使用
  5. android studio miui8,MIUI8上在Android Studio运行出错集及其解决方案
  6. 32位汇编语言helloworld_梦开始的地方——Hello World!
  7. 大数据产品开发流程规范_大数据技术思想入门(三):分布式文件存储的流程
  8. 【脑电信号分类】脑电信号提取PSD功率谱密度特征
  9. 橡鹭科技获源码资本亿元融资,美团原核心高管加盟,发力服务机器人
  10. 小伙一本正经用石头打造CPU,号称99秒“解决”芯片危机