蓝狐的技术思考 BlueFox Thinking in Tech...
交流,分享,探讨技术...... Communication, Sharing, and Discussion about Technology.....

导航

 

Visual Studio 2005 IDE 技巧和窍门

将双手保持在键盘上

我最喜欢使用的键盘快捷方式

您可曾有过这样的期望:在 Visual Studio 内部进行开发工作时双手不必离开键盘?如果您是一名高级用户,您肯定会享受到使用键盘快捷方式执行各种操作所带给您的飞速体验。我确信大部分开发人员都已经熟悉了其中的某些快捷方式。使用 F5 执行 Debug.Start、F10 执行 Debug.StepOver、F4 执行 View.Properties,等等。不过仍有其他几个不太为人所知但极其实用的键盘快捷方式。在下表中,我列出了自己最喜欢使用的一些快捷方式。

键盘快捷方式 命令

F7

在设计视图和代码视图之间切换。

F9

切换断点。

F12

转到变量、对象或函数定义。

Ctrl+Shift+7

Ctrl+Shift+8

在“转到定义”堆栈中快速向前和向后导航。

Shift+F12

查找某个函数或变量的所有引用。

Ctrl+M、Ctrl+M

在编辑器中展开和折叠代码段结构。

Ctrl+K、Ctrl+C

Ctrl+K、Ctrl+U

分别用于为代码行添加注释和取消注释。

Shift+Alt+Enter

在全屏模式和正常模式之间切换。

Ctrl+I

渐进式搜索。


代码段

代码段是在 Visual Studio 2005 中引入的最能体现效率的特点之一。它可以避免单调乏味的输入过程(例如键入 for 循环),使您能够快速插入代码段,它还可以提供可完成特定任务(如通过网络发送数据)的模板。大部分内置的 C# 代码段都属于第一种类型 - 这些代码段可以帮助您将重复输入降到最低,而很大一部分内置的 VB 代码段都属于第二种类型 - 使用这些代码段可以更容易地编写执行特定任务的代码。

有两种插入代码段的方式。您可以在代码编辑器中键入代码段的别名,然后按两次 Tab 键(对于 VB 只需按一次 Tab 键)即刻插入代码段。在插入代码段之后,您可以通过按 Tab 键和 Shift+Tab 键跳到代码段的不同区域。这允许您快速更改需要修改的代码部分。请注意:在 C# 中,代码段别名也具有 IntelliSense。您可以在 IntelliSense 列表中通过其代码段图标指明某一项为代码段。

.

图 8. IntelliSense 完全支持代码段

如果忘记了代码段的别名,还可以按“Ctrl+K、Ctrl+X”在代码编辑器内插入别名,也可单击鼠标右键,然后选择“插入代码段...”。这会显示代码段选取器,使用它可以浏览适用于当前编程语言的所有代码段以及选择要插入的代码段。这种插入代码段的方法对于 C# 和 Visual Basic 均有效。对于 Visual Basic 用户,还可以有另一种插入代码段的方式:您可以键入代码段别名的前几个字母,后跟“?”,然后按 Tab 键。Visual Studio 会显示一个按字母排序的列表,其中包含与突出显示的内容最为匹配的所有代码段的别名。此功能仅适用于 Visual Basic 用户。

.

图 9. 在 C# 中插入代码段

从个人角度将,最令人兴奋的代码段功能部分是,您可以为个人使用而创建自己的代码段,也可以将其分享给其他同行使用。当然,您也可以下载其他开发人员创建好的代码段。

在 Visual Studio 内部非常容易就可以创建您自己的代码段。我将通过一个示例说明如何操作。我经常会编写一些应急的实用程序来帮助我完成工作。其中的许多实用程序都有通用的模式:打开某个文件,执行一些处理,然后关闭该文件。以下是我的代码段的创建步骤。

步骤 1: 创建 XML 文件。每个代码段都包含在一个 XML 文件中。在 Visual Studio 内部,只要转到“文件”>“新建. . .”>“文件. . .”,然后选择“XML 文件”类型即可。

.

图 10. 创建新的 XML 文件

步骤 2:定义代码段。如果有足够的兴趣,甚至还有一个可创建代码段的代码段。只要在该文件的第二行按下 Ctrl+K、Ctrl+X,选择“Snippet”代码段,就会自动为您插入一个代码段文件的模板。

.

图 11. 使用 XML 代码段来创建其他代码段

标题、作者、快捷键和描述字段这些内容不言自明,我就不再具体说明了。<Snippet> 标签中的内容值得讨论,我下面的例子可以对此给出最好的解释。

实际上,您将所有代码放在了 <![CDATA[...]]> 标签之内,而该标签是在 </Code> 标签的内部。对于那些希望用户可以轻松替换的字段,您可以在这些字段两边放置一对“$”字符。在我的示例中,我设置了三个我的代码段用户可以轻松替换的参数:StrmReader、FilePath 和 Line。这三个参数在 CDATA 部分的内部使用,每个参数两侧都有一对“$”字符。此外,每个参数也必须在 <Declarations> 元素中进行定义。为每个参数指定一个 ID 和一个默认值(可选)。

敏锐的读者会注意到,在我的代码段内部还有另外一个我没有定义的参数: $end$。这是一个特殊参数,用于指定用户在代码段字段中填写完内容并按下 Enter 键后光标所在的位置。还有一个我在此处没有列出的特殊参数:$selected$。$selected$ 参数只对 SurroundsWith 类型的代码段有意义。它用于定义在使用“Surround With...”插入此代码段时所选的代码段的放置位置。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<Header>
<Title>File Processing</Title>
<Author>James Lau</Author>
<Shortcut>fp</Shortcut>
<Description>Opens a file, does some processing, and then closes the file.</Description>
<SnippetTypes>
<SnippetType>SurroundsWith</SnippetType>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>StrmReader</ID>
<Default>strmReader</Default>
</Literal>
<Literal>
<ID>FilePath</ID>
<Default>fPath</Default>
</Literal>
<Literal>
<ID>Line</ID>
<Default>strLine</Default>
</Literal>
</Declarations>
<Code Language="CSharp">
<![CDATA[
StreamReader $StrmReader$ = null;
try
{
$StrmReader$ = new StreamReader($FilePath$);
string $Line$;
while (($Line$ = $StrmReader$.ReadLine()) != null)
{
// Perform some processing
$selected$
$end$
}
}
catch (IOException ioex)
{
// Handle exception
}
finally
{
$StrmReader$.Close();
}
]]>
</Code>
</Snippet>
</CodeSnippet>

列表 4. 代码段内容示例

自定义 Visual Studio 起始页

在 Visual Studio 2005 中,新的“起始页”不只是包含可以提供有关 MSDN 新闻的最新信息的实时 RSS 源。如果希望在“起始页”上阅读某些其他的 RSS 源,可以通过选择“工具”、“选项. . .”、“环境”,然后选择“启动”页面(在此可以编辑“起始页新闻频道”下面的 URL),自定义 RSS 新闻频道。如果希望在每次启动 Visual Studio 时不要自动显示“起始页”,您还可以通过在同一选项页面中选择“启动时”下面的“显示空环境”来更改此行为。

posted on 2007-03-07 16:21  蓝狐  阅读(272)  评论(0编辑  收藏  举报