一.IDE基礎配置
1.字體
VC6中“Tools→Options→Format→Font”配置字體;VC2005中“工具→選項→環境→字體和顏色”配置字體。
編寫代碼一般採用等寬字體,等寬點陣(位圖)字體,相對矢量字體而言具有兼容性好和顯示清晰的優點。常用的編程等寬字體包括Fixedsys(VC6和notepad御用字體)、Consolas、YaHei Mono。
VC6默認可選字體只有Fixedsys和Terminal,可通過修改註冊表來改字體,在HKEY_CURRENT_USER/Software/Microsoft/DevStudio/6.0/Format下面有幾個子鍵,可以修改Source Window鍵的FontFace和FontSize來配置源代碼窗口的顯示字體。例如設置11號的Consolas(Monofur、Monaco)字體:FontFace=Consolas,FontSize=11。
2.製表符(TAB)
程序塊要採用縮進風格編寫,IDE碰到左括號換行的情況一般會自動縮進(Auto Indent),縮進的空格數和製表符的寬度一般設爲4個半角字符。由於不同的編輯器對TAB空格數的設置可能不一樣,有的是4有的是8,一般取TabSize=4。
VC6中“Tools→Options→Tabs”的“Insert spaces/Keep tabs”中選擇“Insert spaces”;VC2005中“工具→選項→文本編輯器→所有語言→製表符”可配置製表符大小(Tab Size)/縮進大小(Indent Size)爲4,對“插入空格/保留製表符”勾選“插入空格”則按下tab鍵填充四個空格。
到底是“保留製表符”還是”插入空格“取決於所在公司的代碼規範。可參閱讀《縮進,TAB還是空格?》。
3.行代碼字符數
關於一行編寫多少代碼換行比較合適的問題,可以在VC中輸入一行”//”即可得知,一般爲75或80。
4.外接插件和外部工具
外接插件能擴展Visual Studio的功能,例如VC6默認並無行號顯示功能,可以使用VC6LineNumberAddin插件實現顯示行號,“Tools -> Customize→Add-ins and Macro Files”選擇“Browse”進VC6LineNumberAddin.dll即可加載使用。我們在VC2005的“工具→外接程序管理器”中可以看到安裝的“Visual Assist X”插件,並可選擇啓用與否。
外部工具主要是結合IDE使用,如使用AStyle格式化當前打開的代碼文件,使用gedit打開當前代碼文件。外部工具的配置很簡單,VC6中通過“Tools→Customize→Tools”添加,VC2005中通過“工具→外部工具”添加。
以下爲AStyle的配置:
標題:AStyle
命令:C:/Program Files/Microsoft Visual Studio 8/Common7/Tools/AStyle.exe
參數:--style=ansi $(ItemFileName)$(ItemExt)
初始目錄:$(ItemDir)
勾選“使用輸出窗口”。
這樣,“工具菜單”中新增一個“AStyle”的子項,點擊“AStyle”即可按ANSI風格格式化當前文件代碼。
5. IDE指定和打開多個項目
Q1:安裝VS2005後,之前的VC6默認打開程序和圖標都變更爲VC2005的風格。如何恢復至VC6的默認風格呢?
A1:工具→文件夾選項→文件類型(Win7中是設置默認程序)
找到DSW文件,高級(可能先還原)→編輯,用於執行操作的應用程序由"C:/Program Files/Microsoft Visual Studio 8/Common7/IDE/devenv.exe" "%1"更改爲"C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin/MSDEV.EXE" "%1",這樣默認*.dsw文件就以VC6.0打開,而不是以VC8.0打開。同樣更改*.dsp文件類型以用VC6打開,當然可以更改顯示圖標爲VC6風格的。
Q2:雙擊VC項目文件(*.sln/*.dsw),並沒有打開一個新的IDE窗口,而是替代了已經打開的項目。
A2:工具→文件夾選項→文件類型(Win7中是設置默認程序)
找到DSW/SLN文件,高級(可能先還原)→編輯,勾掉“使用DDE”。
二.預處理宏
1.通用宏
VC6.0中:
Project Setting→C/C++→Preprocessor definitions
VC2005中:
項目屬性→配置屬性→C/C++→預處理器定義
(1)平臺識別宏
WIN32:指明是Window 32位系統平臺。
常見的平臺識別宏如下:
_DOS_:MS-DOS 16位系統平臺。
WIN64:指明是Window 64位系統平臺。
_WIN32_WCE:Window Mobile 32位系統平臺。
_UNIX:UNIX系統平臺。
_POSIX_:POSIX(Portable Operating System Interface of Unix)系統平臺。
_LINUX_:LINUX系統平臺。
_APPLE_/_MAC_:蘋果(Macintosh)系統平臺。
(2)字符集識別宏
_MBCS/_UNICODE:指明該工程使用的字符集(多字節字符集/UNICODE)。
在VC6.0的“Project Setting→C/C++→Project Options”處將會有/D "_MBCS"或/D "_UNICODE"開關。
在VC2005的“項目屬性→配置屬性→常規→項目默認值→字符集”中選擇“使用多字節字符集”或“使用 Unicode 字符集”;在“項目屬性→配置屬性→C/C++→使用UNICODE響應文件”中選擇“是”或“否”。在“項目屬性→配置屬性→C/C++→命令行”處將會有/D "_MBCS"或/D "_UNICODE" /D "UNICODE"開關。
當項目中的文件具有 UNICODE路徑(例如中文路徑)時,應在“項目屬性→C/C++→常規”和“項目屬性→鏈接器→常規”中開啓“使用UNICODE響應文件”開關。
(3)CUI/GUI識別宏
_CONSOLE/_WINDOWS:指明應用程序的類型是控制檯程序或窗口程序(CUI/GUI)。
(4)debug/release版本識別宏
_DEBUG/NDEBUG:指明編譯版本(Debug/Release)。
2.項目類型特定宏
VC不同的項目類型,有一些特定的宏,以在編譯器區分項目類型。
(1)Win32 Static Library項目
VC6.0中:
Project Setting→C/C++(Category:General)→Preprocessor definitions:_LIB
如果選擇了MFC Support則_WINDOWS,_AFXDLL
VC2005中:
項目屬性→常規→配置類型→靜態庫(.lib)
項目屬性→C/C++→預處理器→預處理器定義:_LIB
(2)Win32 Dynamic-Link Library項目
VC6.0中:
Project Setting→C/C++→Preprocessor definitions:_WINDOWS,_USRDLL,DLL_EXPORTS
VC2005中:
項目屬性→常規→配置類型→動態庫(.dll)
項目屬性→C/C++→預處理器→預處理器定義:_WINDOWS;_USRDLL;DLL_EXPORTS
(3)MFC DLL項目
<1>Regular DLL with MFC statically linked(帶靜態鏈接MFC的規則DLL)
VC6.0中:
Project Setting→C/C++→Preprocessor definitions:_WINDOWS,_WINDLL,_USRDLL
VC2005中:
項目屬性→C/C++→預處理器→預處理器定義:_WINDOWS;_USRDLL
<2>Regular DLL using shared MFC DLL(使用共享MFC DLL的規則DLL)
VC6.0中:
Project Setting→C/C++→Preprocessor definitions:_WINDOWS,_WINDLL,_AFXDLL, _USRDLL
VC2005中:
項目屬性→C/C++→預處理器→預處理器定義:_WINDOWS;_USRDLL
<3>MFC Extension DLL(using shared MFC DLL)(MFC擴展DLL)
VC6.0中:
Project Setting→C/C++→Preprocessor definitions:_WINDOWS,_WINDLL,_AFXDLL,_USRDLL
VC2005中:
項目屬性→C/C++→預處理器→預處理器定義:_WINDOWS;_AFXEXT
在DLL項目中,_USRDLL宏表示生成Export Lib!
3.其他常用宏
__FILE__/__LINE__:
__FILE__爲包含當前程序文件名的路徑字符串,例如C:/Program Files/Microsoft Visual Studio/VC98/INCLUDE/stdio.h;__LINE__爲當前程序代碼行號,從1開始的整數。
__STDC__/__cplusplus:
當編譯標準C (ANSI C)程序時,編譯器自動定義__STDC__ ;當編譯標準C++ 程序時,編譯器自動定義__cplusplus。
_MSC_VER:Microsoft Visual C++編譯器的版本號。例如VC++6.0爲1200,VC++8.0爲1400,以此類推。
WIN32_LEAN_AND_MEAN告訴編譯器不加載MFC(Not Using MFC)。
關於VC編譯器預處理宏,參考:
《Predefined Macros(VC6.0)》
《C/C++ Preprocessor Reference-Predefined Macros(VC8.0)》
《What’s the difference between the WIN32 and _WIN32 defines in C++》
三.工作目錄和控制檯程序運行參數
1.VC6.0:
“Project Setting→Debug→Working directory”處填寫exe程序的工作目錄。
在“Project Setting→Debug→Program argument”處填寫main運行參數。
2.VC2005:
在“項目屬性→配置屬性→調試→工作目錄”處填寫exe程序的工作目錄。
在“項目屬性→配置屬性→調試→命令參數”處填寫main運行參數。
默認的工作目錄爲ProjectDir,即*.dsp/*.vcproj所在目錄。
通過編譯器啓動(Ctrl + F5)應用程序時,可以將所依賴的lib和dll庫文件所在目錄設爲工作目錄。應用程序執行期間,文件操作的默認路徑爲工作目錄。
工作目錄是指當前目錄,GetCurrentDirectory()得到的路徑;SetCurrentDirectory來改變。
運行目錄是指exe所在路徑,可通過GetModuleFileName()得到。
四.附加頭文件包含
1.VC6.0:
VC6.0默認include包含路徑:Tools→Options→Directories→Include files。
對於特定項目的頭文件包含,在“Project Setting→C/C++(Category:Preprocessor)→Additional include directories”處添加附加頭文件目錄,相對目錄參考*.dsp文件。
目錄路徑不需添加雙引號,路徑分隔符爲’/’或’/’,不必考慮反斜槓’/’的轉義。多個路徑之間以逗號分隔。
相應的在“Project Setting→C/C++→Project Options”中將會出現“/I”的包含命令。
2.VC2005:
VC2005默認include包含路徑:工具→選項→項目和解決方案→VC++目錄→包含文件。
對於特定項目的頭文件包含,在“項目屬性→配置屬性→C/C++→常規→附加包含目錄”處添加附加包含目錄,相對目錄參考$ProjectPath(*.vcproj文件路徑)。
目錄路徑不需添加雙引號,路徑分隔符爲’/’或’/’,不必考慮反斜槓’/’的轉義。多個路徑之間以分號分隔。
相應的在“項目屬性→配置屬性→C/C++→命令行”中將會出現“/I”的包含命令。
3.關於#include的兩種包含方式
#include <std*.h>爲編譯器指定的包含路徑下的頭文件:即在VC6.0中的“Tools→Options→Directories→Include files”(對應VC2005的“工具→選項→項目和解決方案→VC++目錄→包含文件”)處指定的包含目錄。默認情況下包括
- $(VCInstallDir)include(/Microsoft Visual Studio/VC98/INCLUDE)
- $(VCInstallDir)atlmfc/include(/Microsoft Visual Studio/VC98/ATL/INCLUDE、/Microsoft Visual Studio/VC98/MFC/INCLUDE)
- $(VCInstallDir)PlatformSDK/include(VC2005)。
對於“Tools→Options→Directories→Include files”(“工具→選項→項目和解決方案→VC++目錄→包含文件”)目錄下的文件的包含,一般可使用尖括號包含。系統對尖括號的包含優先到編譯器設置的包含路徑下定位,再到附加包含目錄下進行定位。
#include"MyHeader.h"爲在“Tools→Options→Directories→Include files”(“工具→選項→項目和解決方案→VC++目錄→包含文件”)處人工添加的包含路徑下的頭文件或者附加包含目錄下的頭文件。
對於編譯器提供的標準庫函數頭文件(“Tools→Options→Directories→Include files”(“工具→選項→項目和解決方案→VC++目錄→包含文件”)),一般使用尖括號進行包含聲明,當然使用雙引號包含也沒有錯。
對於在“Tools→Options→Directories→Include files”(“工具→選項→項目和解決方案→VC++目錄→包含文件”)處人工添加的包含路徑和附加包含目錄下的頭文件的包含可以使用尖括號進行包含,但一般使用雙引號。
原則上,對於工程或文件可見的包含目錄下的頭文件包含,使用以上兩種包含方式中的任一種都不會出錯,主要是它們在搜索目錄時的順序不一樣。習慣上使用尖括號包含標準庫函數頭文件,使用雙引號包含用戶自定義頭文件。
一般針對具體工程使用附加頭文件包含即可,不必去動編譯器的“Tools→Options→Directories→Include files”(對應VC2005的“工具→選項→項目和解決方案→VC++目錄→包含文件”)。但是,對於像DirectX、wxWidgets等這樣的SDK,一般宜對include/library路徑作編譯器級全局配置,同時指定相應source路徑,以便做源碼級調試(F11進入SDK內部代碼)。下面的鏈接庫包含情同此理。
External Dependencies裏面顯示的是你的工程要用到的頭文件,不在你的工程裏面,而且也不在VC的默認包含路徑中。參考:《VC6.0的External Dependencies》。
五.附加鏈接庫包含
1.VC6.0:
VC6.0默認lib包含路徑:Tools→Options→Directories→Library files
對於特定項目的頭文件包含,可以通過以下兩步添加附加鏈接庫:
1. 在“Project Setting→Link(Category:Input)→Additional library path”處添加附加庫目錄,相對目錄參考*.dsp文件。
目錄路徑不需添加雙引號,路徑分隔符爲’/’或’/’,不必考慮反斜槓’/’的轉義。多個路徑之間以逗號分隔。
相應的將會在“Project Setting→Link→Project Options”處同步“/libpath”庫包含命令。
2. 在“Project Setting→Link(Category:General)→Object/Library Modules” 處添加庫文件名YourLib.lib(也可在文件中使用#pragmacomment(lib,"YourLib.lib")顯式導入所依賴的靜態庫),多個庫之間以空格分隔。
相應的將會在“Project Setting→Link→Project Options”處同步包含的庫名稱。
2.VC2005:
VC2005默認lib包含路徑:工具→選項→項目和解決方案→VC++目錄→庫文件
對於特定項目的庫文件包含,可以通過以下兩種方式添加附加庫目錄:
方式1:
(1)在“項目屬性→配置屬性→鏈接器→常規→附加庫目錄”處輸入附加庫目錄路徑,相對目錄參考$ProjectPath(*.vcproj文件路徑)。
目錄路徑不需添加雙引號,路徑分隔符爲’/’或’/’,不必考慮反斜槓’/’的轉義。多個路徑之間以分號分隔。
相應的將會在“項目屬性→配置屬性→鏈接器→命令行”處同步“/LIBPATH”庫包含命令。
(2)在“項目屬性→配置屬性→鏈接器→輸入→附加依賴項”處添加庫文件名YourLib.lib(也可在文件中使用#pragma comment(lib, "YourLib.lib")顯式導入所依賴的靜態庫),多個庫之間以空格分隔。
相應的將會在“項目屬性→配置屬性→鏈接器→命令行”處同步包含的庫名稱。
方式2:
在“項目屬性→配置屬性→鏈接器→命令行”處添加庫文件名YourLib.lib(必要時添加相對目錄,保證YourLib的可見性)。
六.生成文件目錄設置
1.VC6.0:
在“Project Setting→General→Output directories”的“Output files”處填寫*.exe或*.lib/*.dll的生成目錄,相應在“Project Setting→Link(或Library)→Output file name”處將會同步文件輸出路徑。相對目錄參考*.dsp文件。
在“Project Setting→General→Output directories”的“Intermediate files”處填寫中間文件生成目錄。相對目錄參考*.dsp文件。
2.VC2005:
在“項目屬性→常規→輸出目錄”處填寫輸出目錄,在“項目屬性→常規→中間目錄”處填寫中間目錄,相對目錄參考$ProjectPath(*.vcproj文件路徑)。
在“項目屬性→鏈接器(或管理員)→常規→輸出文件”處填寫輸出文件路徑。
輸出目錄(OutDir)一般爲$(SolutionDir)$(ConfigurationName)
輸出文件(OutputFile)一般爲$(OutDir)/$(ProjectName).exe(*.lib,*.dll)
(1).環境變量宏說明
$(SolutionDir)爲*.sln文件所在文件夾,尾帶‘/’;
$(ProjectDir)爲*.vcproj文件所在文件夾,尾帶‘/’;
$(PlatformName)爲平臺名稱,例如Win32,Windows Mobile 6 Professional SDK(ARMV4I)。
$(ConfigurationName)爲*.sln的*.vcproj文件所在文件夾下的debug、release文件夾,參考*.vcproj文件中的<Configurations>配置項。
具體在“項目屬性→配置屬性→調試→命令”下拉點擊“編輯”,展開“宏(M)>>”,可以看到很多項目內置宏。
(2).生成目錄的配置
輸出目錄(OutDir):$(ProjectDir)$(PlatformName)/$(ConfigurationName)
以上穿插$(PlatformName)主要是爲了發佈多平臺版本考慮,對於普通的單平臺開發,該路徑可選。
TargetDIr爲OutDir後加‘/’。
輸出文件主要按項目區分如下:
- DLL項目:*.pdb,*.exp,*.lib
- EXE項目:*.pdb
中間目錄(IntDir):$(OutDir)/Intermediate
中間文件包括*.pch,*.obj,(*.sbr),vc6(8)0.idb,vc6(8)0.pdb
輸出文件:$(OutDir)/$(ProjectName).lib(dll、exe)
- DLL項目:*.ilk,*.dll
- EXE項目:*.ilk,*.exe
關於*.pch,參考《預編譯頭文件》;注意*.ilk和*.pdb文件只有在Debug版本時纔會生成,關於*.ilk和*.pdb,參考《VC項目配置基礎》。
一般一個大的工程(*.dsw,*.sln),同時含有LIB、DLL和EXE項目,習慣將LIB輸出到項目輸出目錄或將這些鏈接時用到的LIB放到專門的目錄;EXE和其運行依賴的DLL都輸出到BIN目錄,這樣便於項目的組織和最終成果的發佈。
3.清理Debug\Release目錄的腳本 - clean.bat
@ echo --------------------------------------------
@ echo 清理Debug目錄和Release目錄。
@ echo --------------------------------------------
@ echo
pause
echo 清理開始
FOR /R . %%d IN (.) DO rd /s /q "%%d\Debug" 2>nul
FOR /R . %%d IN (.) DO rd /s /q "%%d\Release" 2>nul
del /q/s *.user *.opt *.plg *.ncb
echo 清理結束
echo. & pause
七.關於相對目錄
相對目錄是相對某個文件而言的,例如在VC項目屬性配置附加包含目錄、附加庫目錄則是相對*.dsp、*.vcproj文件而言的;在某個*.c、*.cpp文件中使用#include包含命令,是相對這個*.c、*.cpp文件而言的。
當前目錄是可見的,一般直接引用文件名(夾),對於子文件夾可以添加”./”。
..:父目錄
../include:父目錄下的include目錄
../..:祖父目錄
../../include:祖父目錄下的include目錄
在VC2005中,“屬性窗口”可查看當前文檔的“文件信息”,其中可查看文件相對*.vcproj的相對路徑。
八.依賴項目聯編
一個解決方案(dsw、sln)可以創建很多輔助子項目(dsp、vcproj),如何設置使在編譯主項目的時,先編譯所依賴的輔助項目呢?
一般會配置輔助子項目的OutDir和主項目相同,這樣生成的lib或dll對於主項目exe直接可見。
VC6.0中:
選擇菜單“Project→Dependencies”可以選擇需要聯編的項目。
VC2005中:
在解決方案資源管理器中右擊項目名稱,選擇“引用”或“項目依賴項”菜單可添加(選擇)引用依賴項目;選擇“項目生成順序”可查看建立項目依賴後的項目生成順序。
建立依賴關係後,主項目編譯(F7,Build)時,若發現輔助依賴子項目有改動,則會先編譯子項目。
九.附加DLL調試
VC6.0中:
如果你需要調試的DLL是動態裝入(LoadLibrary)的,則需要在“Project Setting →Debug(Category:Additional DLLs)”處添加這個DLL文件。
Place a check in the first column to load the module’s symbols at the start of a debug session.
十.導出makefile
VC6.0中選擇菜單“Project→Export Makefile”即可導出Makefile文件*.mak。
VC6以後不再支持makefile輸出了。
參考:《VC的MAKE文件的語法》,《vs6 IDE導出的makefile使用方法》,《教你在VS2005下寫MakeFile》
十一.代碼的編輯與閱讀導航
Visual Studio本身就帶有充分的代碼組織、編輯、分析以及閱讀能力的支持。
VC6.0的“Project Settings→C/C++→Generate Browse info”和“Project Settings→Browse info→Build browse info file”可生成嚮導文件,FileView和ClassView需要這些信息導航。
VC6.0和VC2005中的“Edit→Find in Files”支持指定項目、工程或文件內的關鍵字搜索。
VC6.0的“Tools→Source Browser”(Alt+F12),提供對“Definitions and References”、“File Outline”、“Base Classes and Members”、“Derived Classes and Members”、“Call Graph”、“Callers Graph”等導航功能支持。VC2005側邊欄“類視圖”中支持顯示“基類型”(Base Types)、“派生類型”(Derived Types)、“繼承成員”等功能,右鍵快捷菜單中的“調用瀏覽器”支持函數調用關係圖和被調用關係圖的查看。
編輯時,VC6右鍵快捷菜單支持“List Members”、“Parameter Info”、“Type Info”、“Complete Word”。對應VC2005文本編輯器工具欄中的“顯示對象成員列表”、“顯示參數信息”、“顯示快速信息”、“顯示文字自動完成”。
VC2005右鍵快捷菜單中支持“查找所有引用”,配合代碼定義窗口,可很方便地瀏覽代碼。VC2005標準工具欄中的“向後定位/向前定位”支持定位功能。此外,在閱讀代碼時,我們可以使用書籤(Bookmark)來設置錨點,這樣就可以實現基於書籤的自定義索引導航。
下面介紹常用的編程輔助插件軟件及源代碼層次結構分析工具軟件。
1.Visual Assist X是一款非常好的Microsoft Visual Studio輔助插件,支持C/C++,C#,ASP,Visual Basic,Java和HTML等語言,能自動識別各種關鍵字、系統函數、成員變量、自動給出輸入提示、自動更正大小寫錯誤、自動標示錯誤等,有助於提高開發過程的自動化和開發效率。例如VA Outline中右鍵→Refactor→Rename能夠快速更新變量命名。
Visual Assist X Options->Advanced->Fonts and Colors:(1)Apply coloring to:全部勾選;(2)Text editor font attribute:全部勾選;
2.Windows下的Source Insight是一個面向項目開發的程序編輯器和代碼導航瀏覽器,它還能顯示reference trees,class inheritancediagrams和call trees。相應的Linux下閱讀源代碼的利器Source Navigator能很好地解決文件定位和跳轉問題。
3.Rational Rose是利用UML(統一建模語言)進行分析和設計面向對象軟件系統的強大的可視化工具,可以進行項目需求分析、結構規劃和生成框架代碼,還可以支持從現有系統逆向轉出工程代碼,生成Rose模型的功能。
逆向工程(Reverse Engineer)就是從現有系統的代碼來生成模型的功能。通過Rational Rose分析已有的代碼,可瞭解代碼結構和數據結構,生成類層次關係圖、數據模型圖和組件圖。
十二. VC常用快捷鍵
Alt+F7:Project Settings
Ctrl+J/K:尋找上一個/下一個預編譯條件
Ctrl+Shift+J/K:尋找上一個/下一個預編譯條件並將這一塊選定
Ctrl+Tab:當前打開文檔和上一次打開文檔切換,可配合shift
Alt+O:頭文件與cpp文件的交互顯示
Ctrl+M/Ctrl+M:Expand/Collapse code segment
→或Num+ / ←或Num-:Expand/Collapse tree nodes
Ctrl+D:Focus on Find Combo
Ctrl+Shift+C:Focus on Class View
Ctrl+K, Ctrl+V:Go to Class View Search Combo
Ctrl+\, D:Focus on Code Definition Window
Ctrl+\, E:Focus on ErrorList
Ctrl+Alt+O:Focus on Output
F12:Go to Definition
Ctrl+F12:Go to (function) Declaration
Alt+F12:Find input Symbol
Shift+Alt+F12:Quick Find selected Symbol
Shift+F12:Find All References
Ctrl+-:Navigate Backward
Shift+Ctrl+-:Navigate Forward
Alt+←:Backward
Ctrl+Shift+1:Browse Next
Ctrl+Shift+2:Browse Previous
Ctrl+Z/Alt+Backspace:Undo
Ctrl+Shift+Z/Ctrl+Y:Redo
Ctrl+H:替換
Alt+F3/Ctrl+F:當前文檔查找
F3:Find Next
Shift+F3:Find Previous
Ctrl+F3:Find Next Selected
Ctrl+Shift+F3:Find Previous Selected
Ctrl+]:括號匹配
Ctrl+Shift+]:括號匹配塊選
Ctrl+Shift+F8:配合鼠標和方向鍵實現豎直塊選
Ctrl+B/Alt+F9:編輯斷點
Ctrl+Shift+F9:去掉所有斷點
Ctrl+↑:向上滾屏
Ctrl+↓:向下滾屏
Ctrl+←:移到前一個單詞
Ctrl+→:移到後一個單詞
Ctrl+Shift+←:選定當前位置到前一個單詞
Ctrl+Shift+→:選定當前位置到後一個單詞
Ctrl+Home:文檔頭
Ctrl+Shift+Home:選定從當前位置到文檔頭
Ctrl+End:文檔尾
Ctrl+Shift+End:選定從當前位置到文檔尾
Alt+F8:自動格式重排
Ctrl+F4:關閉當前文檔
Ctrl+Backspace:刪除當前單詞的前半截(以光標爲分割)
Ctrl+Del:刪除當前單詞的後半截(以光標爲分割)
Ctrl+L:剪切當前行
Ctrl+Shift+L:刪除當前行
F2:上一個書籤
Shift+F2:上一個書籤
Alt+F2:編輯書籤
Ctrl+F2:添加/刪除一個書籤
Ctrl+Shift+F2:清除所有書籤
Ctrl+Alt+A:Snapshot Focused Window
Shift+Alt+Enter:Full screen switch
十三. VA常用快捷鍵
Alt+O:Open Corresponding File(h/cpp,aspx/cs/vb)
Shift+Alt+O:Open File in Solution(VA View|[Files in Solution])
Shift+Alt+S:Find Symbol in solution(VA View|[Symbols in Solution])
Shift+Alt+F:Find References in solution(Find All references)
Alt+G/Alt+G:Go to Implementation/Declaration, same as F12/Ctrl+F12 in VC
Shift+Alt+R:Refactor|Rename
Alt+M:List Methods in Current File
Ctrl+Shift+V:Paste selector from clipboard
參考:
《VC的環境設置》
《Managing Solutions, Projects, and Files》
《File Types Created for Visual C++ Projects》
轉載自:http://blog.csdn.net/phunxm/article/details/5082488