带你玩转Visual Studio——带你高效开发

上一篇文章带你玩转Visual Studio——带你了解VC++各种类型的工程一文中讲了各种类型VC++工程的主要功能和用途。现在将带你一起快速开发c++程序。

有过Java开发经验的人都知道Java的常用开发工具(如Eclipse、Intellij IDEA等)都有非常强大的关键字高亮、智能提示、快速追踪等的功能。那也许你就要问了:进行C++开发的Visual Studio是否也有这个功能呢?首先要说明的是Visual Studio本身并没有这么强大的功能(至少VS2010及之前版本是这样的,有一些简单的代码跟踪能力但是很难用),但它有一个非常强大和好用的插件有这些功能,它就量VassistX,也称为VC助手,它就是本文要讲的内容。


VassistX的简单介绍与下载安装

简单介绍

VassistX的全称是Visual Assist X,是whole tomato开发的一个非常好用的插件,可用于VC6.0及Visual Studio的各个版本(包括VS.NET2002、VS.NET2003、VS2005、VS2008、VS2010、VS2012、VS2013及VS2015)。

VassistX有以下主要功能:
智能提示:关键字的提示,已有类名、方法名的提示,类成员(成员数据和成员函数)的提示;
代码高亮:关键字、类名、方法名等用不同的颜色进行高亮,方便代码的阅读;
快速追踪:声明与实现的快速跳转,.cpp与.h文件的快速切换;
高效查找:文件名的查找,标识符的查找,标识符补引用的查找;
代码重构:重命名标识符(变量名、方法名、类名等,这个非常有用),自动添加成员变量的Set/Get方法,自动添加函数的注释等。

下载与安装

下载:

官方下载地址:http://www.wholetomato.com/downloads/default.asp
你也可以到中文的一些网站去下载,网上一搜一大片。

安装:

安装非常简单,你只需要点击VA_X_Setupxxxx.exe进行默认安装即可,这没什么要说的。

注册码

还是那句话:自己想办法(以后都不再进行说明),如果有钱还是支持正版,毕竟作为程序员的我们应该知道写一个好的程序不容易。



VassistX的使用指南

1.通过“Tip of the day”快速学习。

在你安装VassistX后,启动VS时,会有一个帮助提示(如下图),这是你快速学习VassistX的最好方式,还有小动画提示,一看就懂。如果你看不懂英文,看小动画也能明白怎么回事。

tip of the day
图 1:tip of the day

如果你不希望每次启动VS时都弹出这个对话框,只需把左下角的”Show tips at startup”的勾选去掉就可以。如果需要再次弹出对话,在菜单中选择VassitX\Visual Assist X Option…–>Starup,把Show tip of the day勾选上即可。


2.主要窗口和工具

插件装上之后你应该就能感觉比以前好多了,比如代码高亮啊,智能提示啊,应该立马就能体现出来。但这还是要简单介绍一下。

窗口视图
图 2:窗口视图

插件成功安装之后,菜单栏会多一个VassistX的菜单,这里包含了VassistX的所有功能和相关的设置,设置方面后面还会进一步讲。
左侧会有两个VA Outline和VA View视图(如果没有,可能菜单VassistX\Tools\VA Outline调出来)。VA Outline这个视图很有用,也是我用的最多的一个视图,它能清晰地呈现一个类中的各个成员。
工具栏也会多一个VassistX工具组。这个我用的最多的要数最右边的.h与.cpp的切换按钮。


3常用的快捷键

这里只列出一些最常用的快捷键,一般记住这些也就够用了。

快捷键说明备注
Alt+G快速跳转,如由声明跳转到实现,由实现跳转到声明。光标要在标识符处
Alt+O.h与.cpp文件的快速切换
Alt+Shift+F查找标识符所有被引用的位置光标要在标识符处
Alt+Shift+O查找整个Solution下的某个文件O指open,打开指定的文件
Alt+Shift+S查找标识符S指Symbol
Alt+Shift+R重命名标识符光标要在标识符处,R指ReName
Ctrl+Shift+V选择剪切板的内容进行粘贴

更改快捷键

菜单Tools\Option…,然后在打开的对话框中选择Keyboard,Show commands containning中输入VAssistX就能看到VAssistX的各种功能,你可以设置某一指定功能的快捷键。如你输入VAssistX.refactorRename,就能看到重命名的默认快捷键是Shift+Alt+R,你在Press shortcut keys中按下快捷键更改它。

设置快捷键
图 3:设置快捷键



VassistX的高效开发的属性配制

选项设置

VassistX有些默认设置并不太友好,我们可以自己重新设置它。在菜单中选择VassitX\Visual Assist X Option…打开设置对话框。以下是我个人的偏好设置,仅作参考(只说明一些关键设置的含义)。

设置1
图 4:设置1

1.拼写错误检测(这个不要选,不然老会有红色的波浪线提示);
2.类型错误检测(这个选上,可以测试你的变量类型是否正确);

设置2
图 5:设置2

1.高亮引用的标识符(设置颜色,一个当前词的颜色,一个是非当前词的颜色);
2.自动高亮当前光标所在处标识符
3.高亮查找引用的结果;
4.高亮重命名标识符时关联的变量;

设置3
图 6:设置3

1.(黑色)高亮匹配的括号;
2.(红色)高亮不匹配的括号;
3.高亮当前光标所在的行(可选择高亮前景或高亮背景);
4.纵向指示器的分隔线,一般用于控制一行代码的字符数;
5.高亮查找结果。


注释配制与自动添加代码

注释也是程序的一个重要组成部分之一,好的注释是提高代码的可读性和程序的可维护性的一个关键因素,而要写大量的注释是一件非常繁琐的事情,给程序员增加了不少负担,而VAsssistX就可能帮我们减轻这种负担。将光标移到函数名处,右键鼠标选择Refactor\Document Method可自动帮我们添加函数的注释。

我们可以自己配制自定义的注释格式。选择菜单:VAssistX\Insert VA Snippet…\Edit VA Snippet…进行设置。给出我的相关设置,仅作参考:

Title: File header detailed
Shortcut: fh
Description: 对整个文件进行注释

//===============================================================
//Summary:
//          $FILE_BASE$ 类, $end$
//FileName:
//          $FILE_BASE$.$FILE_EXT$
//Remarks:
//          ...
//Date:
//          $YEAR$/$MONTH$/$DAY$
//Author:
//          %USERNAME%(luoweifu@126.com)
//===============================================================

说明:两个$符号之间的内容都是VAssistX中定义的宏,参见文后的附录:Visual Assist X Snippets 宏


Title: Refactor Document Method
Shortcut:
Description: 对函数进行注释

//---------------------------------------------------------------
//function: 
//          $SymbolName$ $end$
//Access:
//          $SymbolVirtual$ $SymbolPrivileges$ $SymbolStatic$
//Parameter:
//          [in] $MethodArg$ - 
//Returns:
//          $SymbolType$ - 
//Remarks:
//          ...
//author:    %USERNAME%[luoweifu]
//---------------------------------------------------------------

Title: #ifndef … #endif
Shortcut: #ifn
Description: 防止头文件重复包含

#ifndef __$FILE_BASE_UPPER$_H__
#define __$FILE_BASE_UPPER$_H__
$end$
#endif  //__$FILE_BASE_UPPER$_H__

Title: Refactor Encapsulate Field
Shortcut:
Description: 添加类中成员变量的Get/Set方法。

    $end$$SymbolType$ Get$GeneratedPropertyName$() const
    {
        return $SymbolName$;
    }
    void Set$GeneratedPropertyName$($SymbolType$ val)
    {
        $SymbolName$ = val;
    }

Title:
Shortcut: //-
Description: 用于某一个重要修改的注释,并记录修改时间。

// $end$ [$YEAR$/$MONTH$/$DAY$ %USERNAME%]

Title:
Shortcut: ///
Description: 分隔线,用于重要的代码块的分隔。

//===============================================================
$end$


附录

Visual Assist X Snippets 宏

.Reserved StringMeaning样例或说明
Date DATE D A T E Year/month/day formatted as %04d/%02d/%02d2015/10/02
DATELOCALE D A T E L O C A L E Current date in locale format本地化格式境
DAY D A Y Day of month formatted as %d2
DAY02 D A Y 0 2 Day of month formatted as %02d02
DAYNAME D A Y N A M E Day abbreviation in locale format//Fri
DAYLONGNAME D A Y L O N G N A M E Full name of day in locale format//Friday
MONTH M O N T H Month formatted as %d10
MONTH02 M O N T H 0 2 Month formatted as %02d10
MONTHNAME M O N T H N A M E Month abbreviation in locale formatOct
MONTHLONGNAME M O N T H L O N G N A M E Full name of month in locale formatOctober
YEAR Y E A R Year formatted as %d2015
YEAR02 Y E A R 0 2 Year formatted as %02d15
Time HOUR H O U R Hour formatted as %d16
HOUR02 H O U R 0 2 Hour formatted as %02d16
MINUTE M I N U T E Minute formatted as %02d29
SECOND S E C O N D Second formatted as %02d30
File FILE F I L E Full filename with path*D:\CppWorkspace\DesignPattern\DesignPattern\Water.h
FILEUPPER F I L E U P P E R Full filename with path in uppercase*D:\CPPWORKSPACE\DESIGNPATTERN\DESIGNPATTERN\WATER.H
FILEBASE F I L E B A S E Filename without path or extension*Water
FILEBASEUPPER F I L E B A S E U P P E R Filename without path or extension in upper case*WATER
FILEEXT F I L E E X T Filename extension*h
FILEEXTUPPER F I L E E X T U P P E R Filename extension in upper case*H
FILEPATH F I L E P A T H Path of file*D:\CppWorkspace\DesignPattern\DesignPattern
FILEPATHUPPER F I L E P A T H U P P E R Path of file in upper case*D:\CPPWORKSPACE\DESIGNPATTERN\DESIGNPATTERN
General clipboard c l i p b o a r d Current clipboard当前剪贴板内容
end e n d Position of caret after expansion输入完成光标位置
selected s e l e c t e d Current selection**选定内容
$$Literal ‘$’ character$转义
Symbol Context MethodName M e t h o d N a m e Name of containing method
MethodArgs M e t h o d A r g s Method parameters函数参数列表
ClassName C l a s s N a m e Name of containing class类名称
BaseClassName B a s e C l a s s N a m e Name of base class of containing class基类名称
NamespaceName N a m e s p a c e N a m e Fully qualified namespace name命名空间
GUID GUIDDEFINITION G U I D D E F I N I T I O N Generated GUID formatted for use in a definitionGUID定义,“,”分割
GUIDSTRING G U I D S T R I N G Generated GUID formatted for use in a stringGUID字符串,“-”分割
GUIDSTRUCT G U I D S T R U C T Generated GUID formatted for use in a structGUID结构
GUIDSYMBOL G U I D S Y M B O L Generated GUID formatted with underscoresGUID符号,”_”分割
GUIDSTRINGUPPER G U I D S T R I N G U P P E R Uppercase version of GUIDSTRING G U I D S T R I N G
GUIDSTRUCTUPPER G U I D S T R U C T U P P E R Uppercase version of GUIDSTRUCT G U I D S T R U C T
GUIDSYMBOLUPPER G U I D S Y M B O L U P P E R Uppercase version of GUIDSYMBOL G U I D S Y M B O L
The following reserved strings are available only in refactoring snippets
Refactor GeneratedPropertyName G e n e r a t e d P r o p e r t y N a m e Property name generated during Encapsulate Field与类属性同名的访问方法,首字符大写(类似Java中的Set/Get方法)
generatedPropertyName g e n e r a t e d P r o p e r t y N a m e Same as GeneratedPropertyName G e n e r a t e d P r o p e r t y N a m e but with lower-case first letter与类属性同名的访问方法,首字符小写
MethodArg M e t h o d A r g One parameter of the method and its type不可用
MethodArgName M e t h o d A r g N a m e One parameter of the method方法参数
MethodArgType M e t h o d A r g T y p e Type of one parameter of the method函数体
MethodBody M e t h o d B o d y Body of implementation函数体
MethodQualifier M e t h o d Q u a l i f i e r Optional qualifiers of method尚不清楚
ParameterList P a r a m e t e r L i s t Parameters separated by commas参数列表
SymbolContext S y m b o l C o n t e x t Context and name of method函数全名(含类信息等)
SymbolName S y m b o l N a m e Name of method函数名称
SymbolPrivileges S y m b o l P r i v i l e g e s Access of method访问控制
SymbolStatic S y m b o l S t a t i c Keyword static or blankstatic
SymbolType S y m b o l T y p e Return type of method函数返回类型
SymbolVirtual S y m b o l V i r t u a l Keyword virtual or blankvirtual


上一篇回顾:
带你玩转Visual Studio——带你了解VC++各种类型的工程

下一篇要讲述的内容:
带你玩转Visual Studio——带你高效管理代码




关注【SunLogging】
这里写图片描述
长按或扫码二维码,在手机端阅读更多内容

  • 45
    点赞
  • 177
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值