# Hack 24   定制快捷键

VS能够做很多键盘的配置,其实在VS中目前已经发现有很多的快捷键了,但是在这个技巧篇里会学到如何创建新的快捷键,以及编辑已有的快捷键。VS中包含很多的命令,只有其中的一小部分定义了快捷键,可以通过“选项”窗口来添加或者移除快捷键定义。

(1) 添加定制快捷键

在这里你将会为“生成->重新生成解决方案”命令添加快捷键,首先通过“工具->选项”打开选项窗口,并选择环境文件夹下的子项“键盘”。可以通过这个界面来编辑或创建快捷键。

VS不允许对键盘映射的默认方案进行改动。所以必须先将目前的映射方案保存为另一个新的映射方案名称,然后对新方案进行编辑。(但是我在VS2005里没有发现这个按钮,不清楚到底是哪里做了改进)。

接着找到要定义的命令,可以通过在“显示命令包含”里键入部分名称从列表中找到它,选择它。

然后确定快捷键的作用范围。在“新的快捷键用于”下拉列表里选择“全局”,对于某些快捷键,你可以设定应用于某个设计器或者编辑器(例如,可以设定一个快捷键针对于ASP.NET,仅当使用HTML编辑器的设计视图时是合法的)。

最后是确定用什么快捷键,这个有点麻烦,因为有很多快捷键已经被占用了,如果被占用了,在下面会显示其当前的占用对象,如果你点击“分配”按钮,然后再点击“确定”按钮就会成功分配了,并会覆盖掉原来占用这个快捷键的命令快捷方式。

VS支持键盘和弦(Key Chords),就是多个快捷键的组合,比如 Ctrl+K, Ctrl+E 可以用于一个命令,这两个快捷键必须接着依次按才可以触发命令。

(2) Hacking the Hack (不知道这个该怎么翻译才合适,也许只可意会,不可言传吧,呵呵)

这个小节讲的内容主要是针对当你辛辛苦苦为自己定制好了自己风格的快捷方式后,如果要换台计算机开发,怎么将这些定制的设置迁移到另一台计算机上。这里又借助了VSTweak这个辅助插件工具,但是这个工具现在仅有针对VS2003的,VS2005的还没发现,所以偶用不着,也不用在这里纪念它了。

但是这里介绍一种手工的方法,我觉得还是可以借鉴的,比较简单,其实说白了就是拷贝几个文件而已。文件后缀名为“.vsk”,存在 \Documents and Settings\\Application Data\Microsoft\VisualStudio\8.0 这个目录里,我自己在VS2005里试了一下,默认情况下只有一个Current.vsk文件,但是如果你删除后,VS还会自动新建一个;如果你对键盘映射做了改动,它会生成一个新的Users.vsk文件,可能就是这个文件啦。

另外,个人觉得VS2005肯定不会不考虑这些的,应该从“工具->导入和导出设置”这个命令可以利用向导来完成这些工作,反正条条大路通罗马,只要达到目的了,就OK了。:)

# Hack 25   定制菜单和工具栏

我们可以让VS如我所愿地工作,还可以将这些工作方式顺利迁移到其他计算机上。VS包含很多菜单和工具栏,让我们学习如何定制他们吧。

(1) 定制工具栏

a. 修改存在的工具栏

移动按钮:很简单,就是按下Alt键,并拖动按钮,可以在工具栏之间或者同个工具栏的不同位置之间进行拖放;

添加或移除按钮:首先通过“工具->自定义”或者点击每个工具栏右边的小箭头,选择添加或移除按钮->自定义,然后就打开了“自定义”窗口,在其中操作就是了,其实就是拖拉过来拖拉过去的,直接选中某个命令,直接从自定义窗口拖到工具栏上就可以啦。

但是拖上去以后可能就没有图标,这些很好解决,可以拷贝其他按钮的,然后再进行编辑就行了。一切奥妙尽在右键菜单,反正我是领会到了,自己可以动手感觉一下。

b. 添加新的工具栏

这个操作也是在“自定义”窗口里进行的,很简单,不用多说了。

(2) 定制菜单

菜单的定制和工具栏类似,也是在“自定义”窗口的“命令”页面里进行的,直接拖拉完成。

(3) 重置变化

botch up [口](由于不注意、不小心等)搞坏, 弄糟

有时由于调皮捣蛋弄巧成拙了,怎么办?VS还提供了挽救的办法,就是重置到最初状态。怎么操作呢?步骤如下:

a. 关掉所有打开的VS;
b. 打开VS命令窗口;
c. 输入devenv /setup ;
d. 这样会重置所有的工具栏和菜单栏的定制,并且修复出现的问题。

(注:我在VS2005里做了N次的试验,实践证明,没有起作用)

(4) Hacking the Hack

对于这些定制的迁移,也就是说到另一台计算机上怎么能带过来。我觉得VS2005还是会从“工具->导入和导出设置”这个命令可以利用向导来完成这些工作的。下面有种手工的方法:

说白了就是拷贝文件而已。文件名为“CmdUI.PRF”,对于VS2005来说,存在 \Documents and Settings\\Application Data\Microsoft\VisualStudio\8.0\2052 这个目录里,我自己在VS2005里试了一下,没问题,但是如果你删除,VS还会自动新建一个。

所以经过我的思考和试验,其实如果要重置这些菜单和工具栏的变化,根本就不需要运行那个不管用的命令“devenv /setup”,只要把CmdUI.PRF这个文件删除就可以了。或者我觉得还可以从“工具->导入和导出设置”弹出的向导窗口里选择“重置所有设置”功能来搞定,不过这个我没有试过。

# Hack 26   创建自定义窗口布局

VS的窗口就像一个项目的仪表板,可以创建不同的布局,并在其中来回切换。

VS有一些缺省的窗口布局,例如它有设计模式的窗口布局和调试模式的布局。对这些窗口布局的修改不会在相互之间受到影响。VS虽然包含了一些布局方案但是却没有提供创建布局以及在各种布局切换的功能。但是提供了一个Power Toy可以完成这些工作,那就是 VSWindowManager, 我找了针对VS2005的版本,下载地址为:http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=VSWindowManager&ReleaseId=543,目前最新的版本是 VS2005 1.2Beta版本的。安装时先关掉VS,装完后再打开,会发现“窗口”菜单中多了两项,并且还多了个工具栏“Windows Manager”,工具栏按钮分别对应“Apply Window Layout ”里的几个布局模式。

两个菜单项分别为“Save Windows Layout As”和“Apply Window Layout”,使用起来很简单,诼磨一下就好了,也就是先定制好模式,然后再应用。

(1) Hacking the Hack

对于这些定制的迁移,也就是说到另一台计算机上怎么能带过来。就是拷贝一个文件而已。文件名为“devenv.xml”,对于VS2005来说,存在 \Documents and Settings\\Application Data\Microsoft\VisualStudio\8.0 这个目录里,我自己在VS2005里试了一下,很遗憾,没有找到这个文件。

# Hack 27   自定义工具箱

VS的工具箱是最常用的,用来存放控件和代码段,可以直接拖放到编辑器或代码窗口中。

(1) 控件和工具箱

可以添加控件到工具箱中,我是在VS2005中操作的,在工具箱中选择一个选项卡,然后点击右键,选择“选择项”,就会弹出一个窗口,分别包含一个.NetFrameWork的控件列表和一个COM列表,选中那些前面未打勾的,然后确定以后,就可以添加到当前选项卡中了。

添加的控件如果没有提供图标,系统会自动分配一个小齿轮图标,如果你自己做控件,可以弄一个16*16的位图,设置为嵌入资源,并且和你的控件同名即可。

(2) 代码段和工具箱

工具箱的通常用法就是添加移除选项卡和控件,但是也可以用它来存放常用的代码段。比如存放一段JavaScript代码、调用获得连接字符串的方法等等,工具箱是个很好的存放地点。

可以先单独建个选项卡,起个名字,例如“代码段”,然后从文档窗口选中代码段,拖放到选项卡里,就OK了,最好再将其重命名一下,起个有意义的名字,这个重命名不会影响到代码段的内容。如果需要用到时,就直接将其拖放到文档窗口的指定位置。

(3) Hacking the Hack

还是要谈到了如果换了计算机怎么办的问题,还是拷贝一个文件,就是“toolbox.tbd”,对于VS2005来说,位置处于:\Documents and Settings\<username>\Local Settings\Application Data\Microsoft\VisualStudio\8.0\,当然如果存在自定义的控件,相应的控件程序集也需要拷贝。

注:这些均为本人看书的读后感及部分翻译,如要转载,请通知偶一下,谢谢。

# Hack 28  打包工具箱设置

如果想要将同样的工具箱设置发布到许多机器上,则可以写个程序来往工具箱里添加自定义组件或代码段。团队开发的最重要的就是编写一致的代码,保证拥有同样的组件集和代码段是有利于此的办法之一。

Hack 27 中讲述的手动拷贝文件的办法对于分发工具箱设置并不见得就好。因为这个方法对于移动个人的配置是很好的解决办法,但是作为分发的方法,就有可能导致覆盖掉每个开发者已经创建的自定义控件和代码段。

那么怎么样才好呢?其实可以通过Visual Studio Common Enviroment Object Model来创建一个小程序来添加控件和代码段到每个开发者的系统里。

先创建一个Windows Forms项目,然后创建一个对envdte.dll程序集的引用(它包含了我们需要用来修改VS环境的对象),它叫Common Enviroment Object Model,可以用来修改VS IDE的各个方面。

此书说当利用EnvDTE时,可能会频繁出现“Call was rejected by the Callee”的错误。这可能是由于超时,在慢机器上频繁出现较多,但是在运行快的机器上也会弹出。在我下载的代码里它通过注册了一个Ole消息了避免这种错误,书中的代码里面如果想正确运行,还得根据你VS的安装修改一些内容。

需要得到目前DTE的实例,并不简单,因为对于VS2002 和VS2003,DTE对象几乎是一样的,我们必须通过ProgID来得到这个类,如下所示:

Type latestDTE = Type.GetTypeFromProgID("VisualStudio.DTE.8.0");
EnvDTE.DTE env = Activator.CreateInstance(latestDTE) as EnvDTE.DTE;

可以通过如下代码得到当前正在运行的VS实例的引用:

EnvDTE.DTE dte = (DTE)Marshal.GetActiveObject("VisualStudio.DTE.8.0");

DTE对象可以用来修改VS的许多部分。如果想访问工具箱窗口,则需要访问DTE对象的Windows集合的vsWindowKindToolBox常量,然后强制转换为ToolBox类型:

//Get the toolbox window
Window win = env.Windows.Item(Constants.vsWindowKindToolbox);

//Get the toolbox from the window
ToolBox toolBox = (ToolBox) win.Object;

后面的没什么好注意的,省略咧,嘿嘿……

# Hack 29  添加对非标准文件扩展名的支持

其实这个就是利用插件工具 VSTweak 来添加某种非标准的扩展名,以便VS能够将其一视同仁,当作自己的孩子对待;或者把某种扩展名踢出门外,但是VSTweak这个工具暂时没有针对VS2005的版本,所以只能干瞪眼喽。

# Hack 30 注册表技巧

VS有一些设置项你只能通过注册表获得,用它可能做不少事情,但是要千万小心行事。

注册表包含了不少VS的设置项。这些设置项有的能够通过“工具->选项”对话框来设置;有的能够通过VS的PowerToys工具来编辑;一些通过直接访问注册表来编辑。这里要学习如何修改;如何用替代的注册表;如何将这些设置在计算机间迁移。

(1)注册表设置项

VS在注册表的两个地方保存大多数的设置项。第一个位置就是位于HKEY_CURRENT_USER/Software/Microsoft/VisualStudio/8.0,保存了当前用户的特定设置。这些设置包括对各种编辑器、外部工具、源码控制以及几乎所有通过“工具->选项”窗口设置的内容。第二个位置就是HKEY_LOCAL_MACHINE/Software/Microsoft/VisualStudio/8.0下,和前一个位置相比,这里保存的是系统配置,对所有的用户都起作用。对于各个项,在此不再罗嗦,就此Over了。

(2)移动注册表设置

移动注册表项非常简单,但是却充满危险(be fraught with danger),最好就是仅仅移动那些你清楚的项。移动的方法很简单,就是选中,然后导出,保存,然后再在另外一个地方导入即可。如果你没用VS2005的话,象在系统间移动字体、颜色、编辑器设置这些工作只能通过注册表来完成。很遗憾,偶用的就是VS2005:)

(3)利用替代的注册项

平时在修改注册表时都要备份一下注册表,省得不小心玩坏了导致出问题,VS还提供了另外一种办法。你能够切换VS使用的注册项。方法就是对当前注册项进行拷贝,然后告诉VS用它,并尽情修改(to one's heart's content 尽兴地),如果出了问题,只需要切换回老的注册项位置就可以了。步骤如下:

a. 对HKEY_LOCAL_MACHINE/Software/Microsoft/VisualStudio/8.0进行到处保存为.reg文件。
b. 在文本编辑器里打开,并将所有“\8.0”替换为“\8.0Hacks”
c. 双击.reg文件,会将其内容装在进当前注册表里,会多出了一项“8.0Hacks”。

在第二步替换时要千万小心,别替换错了,呵呵,内容太多,替换的有好几千项呢。

创建完毕后,下一步就是告诉VS启动时用它了,利用 /rootsuffix 开关来进行切换,运行命令:devenv.exe /rootsuffix Hacks,此命令会让VS利用新注册表项树,注意应该键入Hacks而不是8.0Hacks,由于Hacks是你加到当前键的后缀。

当VS打开时,如果出问题了,就不加开关,还会用原来的8.0注册表项内容。我改好后自己试了一下会出现重新配置VS开发环境的向导,和最初刚安装成功时一样,但是也会弹出错误,同时还会自动在当前用户注册表项那里也自动生成8.0Hacks注册表项。

# Hack 31  保存和移动IDE设置

当我看到这一节内容时,发现前面偶的看法是正确的,VS2005的确是通过“工具->导入和导出设置”功能可以完美解决前面讲的那些通过手工拷贝文件或者利用工具来完成的设置移动功能。点击这个菜单项会出现向导,可以完成“保存”、“导入”、“重置”三种功能。

它会将这些设置保存为一个.vssettings后缀的文件,这个文件是XML和二进制数据的混合,此文件的结构是XML文件格式,但是一些节点的值是二进制数据,不能够编辑,一些是普通文本,很容易编辑。

转自:http://blog.csdn.net/xcntime/article/details/7858284

【VS Hacks】定制VS的更多相关文章

  1. 《Debug Hacks》和调试技巧【转】

    转自:https://blog.csdn.net/sdulibh/article/details/46462529 Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中 ...

  2. 一文带你定制unittest测试用例的名称

    在之前的文章中,我在之前的文章中提到过,这里呢,考虑后,感觉之前的写法不够优雅,于是乎呢,我自己抽空去研究了下,主要是新写方法,这样呢,以后的要使用的时候,可以直接去使用,而不是每次换个环境就要修改环 ...

  3. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  4. Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)

    Webstorm+Webpack+echarts   ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...

  5. 标准产品+定制开发:专注打造企业OA、智慧政务云平台——山东森普软件,交付率最高的技术型软件公司

    一.公司简介山东森普信息技术有限公司(以下简称森普软件)是一家专门致力于移动互联网产品.企业管理软件定制开发的技术型企业.公司总部设在全国五大软件园之一的济南齐鲁软件园.森普SimPro是由Simpl ...

  6. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  7. Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用(后续)

    在[Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用]里面提到了Microsoft 身份认证,其实这也是一大块需要注意的地方,特作为后续补充这些知识点.上章是使用了Microsof ...

  8. Django admin定制化,User字段扩展[原创]

    前言 参考上篇博文,我们利用了OneToOneField的方式使用了django自带的user,http://www.cnblogs.com/caseast/p/5909248.html , 但这么用 ...

  9. 用Kotlin实现Android定制视图(KAD 06)

    作者:Antonio Leiva 时间:Dec 27, 2016 原文链接:https://antonioleiva.com/custom-views-android-kotlin/ 在我们阅读有关c ...

随机推荐

  1. 二、Laya学习笔记 ---- Laya中如何新建一个场景UI并使用

    因为我之前是用Egret的,Egret是场景皮肤HomeSceneSkin.exml,然后在场景代码HomeScene代码中为该场景赋值皮肤this.skinName = "HomeScen ...

  2. HTML5 Canvas 画纸飞机组件

    纸飞机模拟一个物体在规定设计轴线偏离方位. //三角形 function DrawTriangle(canvas, A, B, C) { //画个三角形,“A.B.C”是顶点 with (canvas ...

  3. iOS 通过(lame)将录制音频转换成Mp3

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处,保留原帖地址及作者署名. Url:http://blog.csdn.net/ysy441088327/article/detail ...

  4. 从Spring到SpringBoot构建WEB MVC核心配置详解

    目录 理解Spring WEB MVC架构的演变 认识Spring WEB MVC 传统时代的Spring WEB MVC 新时代Spring WEB MVC SpringBoot简化WEB MVC开 ...

  5. dos 磁盘操作系统

  6. Python面向对象之方法

    普通方法要执行类里面的方法是通过对象触发的 触发的时候把自己赋值给self 类方法 vim day7-7.py #!/usr/bin/python # -*- coding:utf-8 -*- cla ...

  7. 专访|HPE软件部中国区总经理李时:HPE引领IT战略新形态

    ​2016年7月22日,「HPE&msup软件技术开放日」将在上海举办,msup携手HPE揭秘全球测试中心背后的12条技术实践. 李时:HPE软件部中国区总经理,将在本次开放日带来<HP ...

  8. OpenCV学习笔记之CXCORE篇

    转自blog.csdn.net/bbzz2/article/details/50764209

  9. 11.20 HTML及CSS

    <div>用于分组HTML元素的块级元素HTML表单,用于收集不同类型的用户输入<input type='radio'>:定义了表单的单选框按钮<input type=' ...

  10. CCCC 排座位 图着色问题

    1排座位:https://www.patest.cn/contests/gplt/L2-010 2图着色问题 https://www.patest.cn/contests/gplt/L2-023 建图 ...