visual studio制作代码片段
使用 Visual Studio 的代码片段功能,我们可以快速根据已有模板创建出大量常用的代码出来。ReSharper 已经自带了一份非常好用的代码片段工具,不过使用 ReSharper 创建出来的代码片段只能用在 ReSharper 插件中。如果团队当中有一些小伙伴没有 ReSharper(毕竟很贵),那么也可以使用到 Visual Studio 原生的代码片段。
Visual Studio 的官方文档有演示如何创建 Visual Studio 的代码片段,不过上手成本真的很高。本文介绍如何快速创建 Visual Studio 代码片段,并不需要那么麻烦。
Visual Studio 的代码片段管理器
Visual Studio 中代码片段管理器的入口在“工具”中。你可以参照下图找到代码片段管理器的入口。
在打开代码片段管理器之后,你可以选择自己熟悉的语言。里面会列出当前语言中可以插入的各种代码片段的源。
不过,Visual Studio 并没有提供创建代码片段的方法。在这个管理器里面,你只能导入已经存在的代码片段,并不能直接进行编辑。
官方文档提供了创建代码片段的方法,就在这里:
Code snippets - Visual Studio - Microsoft Docs
你只需要看一看就知道这其实是非常繁琐的创建方式,你几乎在手工编写本来是给机器阅读的代码。
我们创建代码片段其实只是关注代码片段本身,那么有什么更快速的方法呢?
方法是安装插件。
Snippet Designer 插件
请去 Visual Studio 的扩展管理器中安装插件,或者去 Visual Studio 的插件市场中下载安装插件:
Snippet Designer - Visual Studio Marketplace
在安装完插件之后(需要重新启动 Visual Studio 以完成安装),你就可以直接在 Visual Studio 中创建和编辑代码片段了。
创建代码片段
你需要去 Visual Studio 的“文件”->“新建”->“新建文件”中打开的模板选择列表中选择“Code Snippet”。
下面,我演示创建一个 Debug.WriteLine 代码片段的创建方法。
编写一段代码
我将一段最简单的代码编写到了代码编辑窗格中:
Debug.WriteLine("[section] text");
1
插入占位符
实际上,这段代码中的 section 和 text 应该是占位符。那么如何插入占位符呢?
选中需要成为占位符的文本,在这里是 section ,然后鼠标右键,选择“Make Replacement”。
这样,在下方的列表中就会出现一个新的占位符。
设置文本占位符
现在我们设置这个占位符的更多细节。比如在下图中,我设置了工具提示(即我们使用此代码片段的时候 Visual Studio 如何提示我们编写这个代码片段),设置了默认值(即没有写时应该是什么值)。设置了这只是一个文本文字,没有其他特别含义。设置这是可以编辑的。
用通常的方法,设置 text 也是一个占位符。
设置类型占位符
如果我们只是这样创建一个代码片段,而目标代码可能没有引用 System.Diagnostics 命名空间,那么插入完之后手动引用这个命名空间体验可不好。那么如何让 Debug 类可以带命名空间地插入呢?
我们需要将 Debug 也设置成占位符。
但是这是可以自动生成的占位符,不需要用户输入,于是我们将其设置为不可编辑。同时,在“Function”一栏填写这是一个类型名称:
SimpleTypeName(global::System.Diagnostics.Debug)
1
转义 $ 符号
实际上用于调试的话,代码越简单功能越全越好。于是我希望 Debug.WriteLine 上能够有一个字符串内插符号 $。
那么问题来了,$ 符号是表示代码片段中占位符的符号,那么如何输入呢?
方法是——写两遍 $。于是我们的代码片段现在是这样的:
Debug.WriteLine($$"[$section$] $text$");
1
保存代码片段
你可以随时按下 Ctrl+S 保存这个新建的代码片段。插件一个很棒的设计是,默认所在的文件夹就是 Visual Studio 中用来存放代码片段的文件夹。于是,你刚刚保存完就可以立刻在 Visual Studio 中看到效果了。
导入代码片段
如果你将代码片段保存在插件给你的默认的位置,那么你根本不需要导入任何代码片段。但如果你曾经导出过代码片段或者保存在了其他的地方,那么就需要在代码片段管理器中导入这些代码片段文件了。
使用代码片段
如果你前面使用了默认的保存路径,那么现在直接就可以开始使用了。
使用我们在 Shortcut 中设置的字母组合可以插入代码片段:
在插入完成之后,我们注意到此类型可以使用导入的命名空间前缀 System.Diagnostics。如果没有导入此命名空间前缀,代码片段会自动加入。
按下 Tab 键可以在多个占位符之间跳转,而使用回车键可以确认这个代码片段。
管理代码片段
在 Visual Studio 视图菜单的其他窗口中,可以找到“Snippet Explorer”,打开它可以管理已有的代码片段,包括 Visual Studio 中内置的那些片段。
visual studio制作代码片段的更多相关文章
- [搬运] 将 Visual Studio 的代码片段导出到 VS Code
原文 : A Visual Studio to Visual Studio Code Snippet Converter 作者 : Rick Strahl 译者 : 张蘅水 导语 和原文作者一样,水弟 ...
- Visual Studio 的代码片段工具
当安装完Visual Studio之后,会有附带一些原生的代码片段文件(*.snippet),对于vs2013参考目录如下: X:\Program Files (x86)\Microsoft Visu ...
- [转载]如何用Visual Studio制作安装包
原文地址:如何用Visual Studio制作安装包作者:蓝羽幽游 环境:Microsoft Visual Studio 2010 语言:C# 构架:.NET Framework 2.0 解决方案名称 ...
- 使用Visual Studio制作安装包
目 录 第1章 合并模块 3 1.1 SystemDll 3 1.1.1 收集文件 3 1.1.2 新建项目 4 1.1.3 增加自定义文件夹 4 1.1.4 设置部署位 ...
- 通过visual studio制作类库的文档
java的集成开发工具,可以导出jar的文档. visual studio 也可以生成类库的文档,邮件项目属性,生成,输出下,选择XML文档文件.然后生成项目,就会再bin下面生成一个xml文件. 将 ...
- Visual Studio 创建代码注释默认模版方法
在日常的开发中我们经常需要为页面添加注释和版权等信息,这样我们就需要每次去拷贝粘贴同样的文字,为了减少这种重复性的工作,我们可以把这些信息保存在Visual Studio 2012类库模版文件里 1. ...
- 【转】VISUAL STUDIO 2008代码指标为您节省资金
转自:https://www.geekzone.co.nz/vs2008/4773 Visual Studio 2008 Team Developer和Team Suite版本中提供的许多新功能之一是 ...
- Visual Studio模板代码注释小技巧分享
在日常开发过程中,难免有这样一种需求:就是你所建的每一个类文件或者接口文件都需要标注下作者姓名以及类的用途.如果我们每次创建文件的时候都需要写一遍这些信息是很烦神的.还好Visual Studio给我 ...
- Visual Studio模板代码注释小技巧
在日常开发过程中,难免有这样一种需求:就是你所建的每一个类文件或者接口文件都需要标注下作者姓名以及类的用途.如果我们每次创建文件的时候都需要写一遍这些信息是很烦神的.还好Visual Studio给我 ...
随机推荐
- centos7.5 安装java11
jdk的下载地址如下: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html 第一 ...
- 没有rc.local的解决办法
转载请注明来源https://www.cnblogs.com/sogeisetsu/p/11395098.html linux 开机自启动 我是小白,最近在想如何使用linux开机自启动,有一个办法是 ...
- 音视频RTP数据包封装
对于语音通信而言,语音码率较低,添加适当冗余是对抗网络丢包的常见方式.冗余方式有多种,包括RED,FEC等都是冗余的一种,如果冗余份数较多,可以采取交织的方式实现.RFC 3350是RTP的基础标准协 ...
- python基础语法8 叠加装饰器,有参装饰器,wraps补充,迭代器
叠加装饰器: 叠加装饰器 - 每一个新的功能都应该写一个新的装饰器 - 否则会导致,代码冗余,结构不清晰,可扩展性差 在同一个被装饰对象中,添加多个装饰器,并执行. @装饰1 @装饰2 @装饰3 de ...
- 浏览器性能监控performance使用
浏览器中有一个performance的性能监控,平时我也没有用到,接手了一个大数据的项目,发现页面打开的比较慢,使用浏览器的performance分析可以看到各个步骤花费的时间. 关于项目的性能分析如 ...
- WHAT IS THE DIFFERENCE BETWEEN REACT.JS AND REACT NATIVE?
Amit Ashwini - 09 SEPTEMBER 2017 React.js was developed by Facebook to address its need for a dynami ...
- react native iOS真机调试-联网问题与js严格模式
rn:strict mode does not allow function declarations in a lexically nested statement https://blog.csd ...
- Socket内核调用数SYSCALL_DEFINE3
http://blog.chinaunix.net/uid-20788636-id-4408261.html 前言: 对于Linux内核的Socket系列文章都是依据于:Linux-3.14.5的版本 ...
- Gym100676 H. Capital City
感觉题目都已经快把正解给说出来了...strongly connected的两个点的消耗为0,其实就是同一个边双连通分量里面的点消耗为0.然后缩一下点,再树形DP一下就完了.第一次写边双,但感觉挺简单 ...
- template-web.js 自定义过滤器
// 比如需要自定义一个去零的过滤器 <script id="templateTest" type="text/html"> <% for(i ...