# 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文件格式,但是一些节点的值是二进制数据,不能够编辑,一些是普通文本,很容易编辑。