views:

11969

answers:

95

Visual Studio is such a massively big product that even after years of working with it I sometimes stumble upon a new/better way to do things or things I didn't even know were possible.

For instance-

  • Crtl + R, Ctrl + W to show white spaces. Essential for editing Python build scripts.

  • Under "HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Text Editor" Create a String called Guides with the value "RGB(255,0,0), 80" to have a red line at column 80 in the text editor.

What other hidden features have you stumbled upon?

+1  A: 

The most important feature I can't live without is Visual Studio 2008. :P

xanadont
+2  A: 

The Debugger :-) Beats Notepad by miles.

Michael Stum
VS Debugger *is* Notepad when compared to windbg :)
Constantin
True, but if the VS Debugger is Notepad, then windbg is vi or emacs :-)
Michael Stum
+11  A: 

A lot of people don't know or use the debugger to it's fullest - I.E. just use it to stop code, but right click on the red circle and there are a lot more options such as break on condition, run code on break.

Also you can change variable values at runtime using the debugger which is a great feature - saves rerunning code to fix a silly logic error etc.

KiwiBastard
+18  A: 

Sara Ford has this market cornered.

http://blogs.msdn.com/saraford/default.aspx

More Visual Studio tips and tricks than you can shake a stick at.

Some others:

  • The Visual Studio 2005 and 2008 3-month trial editions are fully-functional, and can be used indefinitely (forever) by setting the system clock back prior to opening VS. Then, when VS is opened, set the system clock forward again so your datetimes aren't screwed up.
  • But that's really piracy and I can't recommend it, especially when anybody with a .edu address can get a fully-functional Pro version of VS2008 through Microsoft Dreamspark.
  • You can use Visual Studio to open 3rd-party executables, and browse embedded resources (dialogs, string tables, images, etc) stored within.
  • Debugging visualizers are not exactly a "hidden" feature but they are somewhat neglected, and super-useful, since in addition to using the provided visualizers you can roll your own for specific data sets.
  • Debugger's "Set Instruction Pointer" or "Set Next Statement" command.
  • Conditional breakpoints (as KiwiBastard noted).
  • You can use Quickwatch etc. to evaluate not only the value of a variable, but runtime expressions around that variable.
James D
If it's really piracy (which I agree with you about), then why would you even mention it?
Kyralessa
+4  A: 
  • The memory windows, very useful if you're doing low level stuff.
  • Control + K , Control + F - Format selection - great for quickly making code neat
  • Regions, some love them, some hate them, most don't even know they exist
  • Changing variables in debug windows during execution
  • Tracepoints
  • Conditional break points
  • Hold down Alt and drag for 'rectangular' selection.
  • Control+B for a breakpoint, to break at function
  • Control+I for incremental search, F3 to iterate
Ali Parr
+4  A: 

CTRL-D then type ">of " then file name. If the standard toolbar is up crtl-d put you in find combobox and there is now a dropdown with files in your solution that match the start of the filename you typed. Pick one and it will open it. This alternative to the open filedialog is awesome for big solutions with lots of directories.

Steve Steiner
My Visual Studio has CTRL+/ to get to the find box. But I use this all the time.
sontek
You can also use CTRL+# if you have a German keyboard layout
fmuecke
A: 

Here's an old blog article on some of the hidden debugger features in the expression evaluators.

Steve Steiner
+34  A: 
CTRL-K, CTRL-D

Reformat Document!
This is under the VB keybindings, not sure about C#

Mark Glorie
yes, works under C#, Web Designer, XML editor, CSS editor, XSD editor, JavaScript (to an extent).Most of the supported file types
Slace
Ctrk-K, Ctrl-F for C++
MSalters
I use Ctrl-E, Ctrl-D
configurator
Way under used +1
Pat
+9  A: 

I'm not sure if it's "hidden", but not many people know about it -- pseudoregisters. Comes very handy when debugging, I've @ERR, hr in my watch window all the time.

yrp
good one! are there any others?
shoosh
I've heard @xxx is being phased out in favor of $xxx. FWIW, WinDbg also uses $xxx form.
Constantin
Can't you just do "hr,hr" in a watch window? I've used that all the way back in VC6...
LarryF
Excellent. As the linked article suggests, setting conditional breakpoints on @TIB will drastically simplify the debugging of multithreaded apps.
j_random_hacker
+47  A: 

Sara Ford covers lots of lovely tips: http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx

But some of my favourites are Code Snippets, Ctrl + . to add a using <Namespace> or generate a method stub. I can't live without that.

Check out a great list in the Visual Studio 2008 C# Keybinding poster: http://www.microsoft.com/downloadS/details.aspx?familyid=E5F902A8-5BB5-4CC6-907E-472809749973&amp;displaylang=en

Slace
Sara Ford is the goddess of Visual Studio. I couldn't recommend her enough.
Chris Charabaruk
Totally agree which I why I share her work. I'm really loving her current series which covers debugging
Slace
Sad that she quit doing the tip of the day, though it's been so long since she worked with the innards of VS that it's completely understandable that she needed to move on...
Knobloch
Thank you for mentioning CTRL+. I was searching for this one exactly.
Sorin Comanescu
I was always using CTRL+ALT+F10. Didn't know CTRL+. does the same thing - thanks. Much more comfortable.
Noam Gal
@Noam- I used to use CTRL + ALT + F10, only discovered CNTRL+. by reading the book Pro ASP.NET MVC. Much better with CNTRL+.
RichardOD
Ctrl + K + M is faster than Ctrl + . if you are sure that you wanted to generate a method. One of my favorite is Ctrl + K + S for surrounding code with various code blocks like if, try, region etc.
Raj
+17  A: 

Ctrl-F10: run to cursor during debugging. Took me ages to find this, and I use it all the time;

Ctrl-E, Ctrl-D: apply standard formatting (which you can define).

Joel in Gö
Well, the Ctrl-E, Ctrl-D seems to be C# or VB related...
fmuecke
+4  A: 

Drag-drop text selections to the Watch window while in the debugger.

Mark Cidade
+31  A: 

Incremental search: While having a source document open hit (CTRL + I) and type the word you are searching for you can hit (CTRL + I) again to see words matching your input.

Leyu
It's called ">i<ncremental search".
Constantin
As opposed to >ex<cremental search, which is what Firefox implements.
kibibu
Dude this is amazing!! I wish i could upvote this 10 times
Jose
+30  A: 

How many times do you debug an array in a quickwatch or a watch window and only have visual studio show you the first element? Add ",N" to the end of the definition to make studio show you the next N items as well. IE "this->m_myArray" becomes "this->m_array,5".

tenpn
Good thing! I searched for this for a long time, thanks!
zxcat
+34  A: 

CTRL+SHIFT+V will cycle through your clipboard, Visual Studio keeps a history of copies.

sontek
Wow.. that's pretty good. Thanks.
Noam Gal
this can be found in edit.cycleclipboardring in keyboard mappings (in visual c++ this is Ctrl-Shift-Insert, not Ctrl-Shift-V)
Default
+3  A: 

My favorite is CTRL+SHIFT+V, which will cycle through your clipboard history (Visual Studio keeps track of every time you copy).

sontek
Is there any "clipboar manager" there? so you can see what already is in there?
inazaruk
+98  A: 

Make a selection with ALT pressed - selects a square of text instead of whole lines.

shoosh
Not sure about the difference but I've always used Ctrl+Alt.
Craig
Dude... that's slick
Hugoware
Ctrl-Alt will select whole words. Alt will change the size of the selection area by one character at a time.
firedfly
It looks as if they "fixed" (or broke) the paste of a selected block like this, however. Used to be, you could paste code on top of other code, now it appears to always paste new lines. I used the crap out of this for building CTORS, or = operators with lots of members to assign.
LarryF
This works in some other programs too, such as Word 2003.
Charles Anderson
Oh my gosh!! I've wanted this forever, but I didn't think VS.Net would ever have it! I remember it from the old WordStar days, believe it or not!
Charlie Flowers
at first I thought "when will I ever use this", and now I use it almost every day for copy pasting some code to an email, messenger window, stackoverflow, ..
Thomas Stock
This works in MS Word and OO Writer as well. I've used it a lot.
Bård
This (called "block select") also works with the keyboard- hold alt+shift then use the arrow keys.
arolson101
In addition, if you select an empty horizontal column this way, anything you type will get duplicated on every line, behaving like a huge cursor :)
ssg
Your mileage may vary if you copy-paste the rectangular selection.
kibibu
I saw this being *sold* as a feature for VS 2010, but I just tried it in VS 2008 and it worked. I'm flabbergasted. this is amazingly usefull!
DaveDev
+6  A: 

Ctrl-Minus, Ctrl-Plus, navigates back and forward where you've been recently (only open files, though).

Ilya Ryzhenkov
Yep, LOVE these- use them everyday.
MaseBase
Useful when debugging.
Ian
Very useful if you hit F+12 to go to a definition and then want to go back to where you were.
Thomas Bratt
+1  A: 

I always map control + alt + f4 to documents.CloseAllWindows in options>environment>keyboard.

Is somewhat more intuitive than using the mouse.

Got this at ctrl+shit+alt+q. But it's quite fast through alt+w+w too.
Arnis L.
+54  A: 

You can drag code to the ToolBox. Try it!

John
Holy crap so you can! (Thanks!)
Ali Parr
That's neat! .
inazaruk
That's super cool, but where is the code stored on disk?
Glytzhkof
doesn't seem to be much use over snippets though
jk
Dear God...it's a whole new level of copy-and-paste. Copy-and-paste-paste-paste. I know a lot of programmers who I hope never find out that you can do this.
Kyralessa
It would be cool if you could tell it to eval the code when you clicked the button, like a bookmarklet.
intuited
+3  A: 

Shift+Alt+F10 brings up the built in refactoring menu. Great for adding method stubs from interfaces, and adding Using statements automatically for specific classes.

Dave Arkell
An easier way to do this is Ctrl-. (period)
John Sheehan
+4  A: 

Press the F8 key to cycle through search results. (Shift+F8 for reverse direction)

Hit F12 to go to definition of variable.

Shift + alt + arrow keys = Block select!

Yay.... thanks for f8! :)
Arnis L.
+1  A: 

I think the ability to right click on a Stored Procedure in Server Explorer and debug..

RobS
+10  A: 

When developing C++, Ctrl-F7 compiles the current file only.

Sakin
+65  A: 

Tracepoints!

Put a breakpoint on a line of code. Bring up the Breakpoints Window and right click on the new breakpoint. Select 'When Hit...'. By ticking the 'Print a message' check box Visual Studio will print out a message to the Debug Output every time the line of code is executed, rather than (or as well as) breaking on it. You can also get it to execute a macro as it passes the line.

Charles Anderson
I know I'm late to the game, but that's a great feature I never knew about!
Jerry
For extra points you can make a local variable asignment in the when hit button. { localVariable = 1.0f } or increase values by { staticVariable += 0.1f }
Charles Beattie
+1  A: 

Not exactly a hidden feature, but one thing I've done is add a "Start Without Debugging" button next to my "Start With Debugging" button. Just click the down arrow at the right end of the toolbar. Then select "Add or Remove buttons". Then Customize. In the commands tab select the Debug category. Find the Start Without Debugging command and drag it to where you want it on the toolbar.

Slapout
CTRL-F5 is the shortcut for this, with the default settings.Great way to run a faster build, or to not hit your breakpoints.
Eddie Parker
+1  A: 

My best feature is one I had to make myself.. It's a cpp/h flipper. If you are looking at the .h file, and hit this macro, (or its keyboard shortcut), it will open the cpp file, and vice-versa.

I can provide the source if anyone wants it.

LarryF
Visual assist has this.
shoosh
I would love this for flipping between .aspx and .aspx.cs files (likewise for .ascx and .ascx.cs)
Richard Ev
Rich, I just wrote one for myself to do this for aspx and .cs... I'll post the code.
LarryF
A: 

Visual Assist, in general, while a bit OT for this question, is a great app and really helps with the day-to-day running of visual studio. Their open-any-file and find-any-symbol windows are particularly awesome.

tenpn
+1  A: 

Enable Intellisense in Skin Files

  1. Go to Tools->Options menu.
  2. Pick Text Editor -> File Extesion fom a tree at the left part of Options dialog.
  3. Type skin in Extesion text box.
  4. Select User Control Editor from Editor dropdown.
  5. Click Add and then Ok to close dialog and re-open your skin files.
Greg
+2  A: 

Copy-paste from a Watch window of an object's expanded properties in the debugger into Excel will perserve the tabular format and persist the data after the debug session is over.

Mark Cidade
+13  A: 

Discovered today:

Ctrl + .

Brings up the context menu for refactoring (then one that's accessible via the underlined last letter of a class/method/property you've just renamed - mouse over for menu or "Ctrl" + ".")

Muxa
Alt+Shift+F10 does this as well (using C# keybindings)
Kyle Trauberman
Much better than trying to hunt the tiny mouse click target in this situation
Richard Ev
Does nothing for me
Casebash
+57  A: 

Click an identifier (class name, variable, etc) then hit F12 for "Go To Definition". I'm always amazed how maybe people I watch code that use the slower right-click -> "Go To Definition" method.

EDIT: Then you can use Ctrl+- [control minus] to jump back to where you were.

Craig
And don't forget Ctrl+Shift+- [control shift minus] to jump forward!
Kevin Pullin
And Shift F12 for Find all references
Benjol
If you use code that has Interfaces, Go To Definition doesn't always work but if you have ReSharper Ctrl+F12 works! (goes to Implementation)
rob
You can also use ALT+left arrow to go back to where you were
arolson101
With VB key settings, Shift-F2 also does a Go To Definition.
Kyralessa
Resharper does this even nicer - when you hold down ctrl and click on a method call you ski to method declaration
Marek
Might as well right-click-G if you're going the mouse route in the first place.
tsilb
Gonna implement Ctrl -!
Nico
+30  A: 
  • Ctrl-K, Ctrl-C to comment a block of text with // at the start
  • Ctrl-K, Ctrl-U to uncomment a block of text with // at the start

Can't live without it! :)

Thomas Bratt
Also true in VB.NET, except with ' rather than //
ChrisA
Also true in SQL Server Management Studio, except using the SQL comment escape sequence of '--'
Thomas Bratt
I always wished you could toggle comments? Why would you want to "double comment" something? Surely pressing it again should un-comment...
Dan Diplo
Sometimes you want to comment the entire function, and some lines inside are already commented (i.e. they are proper comments). In such cases it's not obvious what to do if you have a toggle, so it's generally better to make the decision explicit.
Pavel Minaev
I wish there was an easy way to wrap a block of text in /* ... */ rather than prepending every line with //. I've started doing this by hand rather than lazily using Ctrl-E, Ctrl-C. Why? Because if you comment out a block of code, which someone else modifies, you get conflicts when you try to merge them (when using a DVCS). If you wrap blocks with C style comments however, then the commented out code gets modified automatically. Also in your revision control, you only see the first and last line of the block as modified, not every line of the block, which makes changesets easier to review.
Mark Booth
Note that if you start at the beginning of text rather then beginning of line you will get the /* */ instead of //. This is by the way my most used feature
Default
for such a useful feature, it should be simpler than something tha requires 2 hands.
DaveDev
@DaveDev: You use 1 hand when you are programming?
Default
@Michael, sometimes when I'm lonely. But otherwise I might be selecting a block of code with the mouse, and then I have to move my hand to the keyboard, and then back again to the mouse. It's not much of an overhead, but if you're doing it a lot it can get tedious
DaveDev
@DaveDev: lol :) right, I usually mark the code with shift-up/down.. So personally not that much hassle. But if you are selecting it with the mouse, it should be one click. Although, you can map it yourself to a one-hand-..click (How about, Ctrl -C[omment] ;))
Default
+2  A: 
  • Ctrl-K, Ctrl-C to comment a block of text with // at the start
  • Ctrl-K, Ctrl-U to uncomment a block of text with // at the start

Can't live without it! :)

Thomas Bratt
+5  A: 

CTRL + Shift + U -> Uppercase highlighted section. CTRL + U -> Lowercase the highlighted section Great for getting my SQL Statements looking just right when putting them into string queries.

Also useful for code you've found online where EVERYTHING IS IN CAPS.

Rob
Too bad they don't have a CamelCase CTRL+Shift option... :) That's probably my #1 refactor I do when I take over a project...Larry
LarryF
+4  A: 

There is an article about this. It seems to be a lengthy collection.

Optimal Solutions
A: 

  • Print the shortcuts from the Microsoft page and put them next to you. Try to learn a new one every day. You'll find all shortcuts already mentioned here + lots more. Some very useful contain formatting a code block, commenting, navigate between pages,...
  • Get Resharper, it's a plugin which whill greatly increase your efficiency. If you use Resharper, you can find a list with shortcuts.
  • Carra
    +10  A: 

    To auto-sync current file with Solution Explorer. So don't have to look where the file lives in the project structure

    Tools -> Options -> Projects and Solutions -> "Track Active Item in Solution Explorer"

    That one is going to save me A LOT of time! thanks...
    Richard Ev
    this gets annoying after a while. i wish there were a keyboard shortcut to do this on demand.
    qntmfred
    Here's a post on how to track on demand. http://dvanderboom.wordpress.com/2008/03/21/visual-studio-macro-track-item-in-solution-explorer-on-demand/
    Jerry
    If you have lots of files open, it can kill VS (without warning) if you do things like 'Close all but this' (from PowerCommands, I think).
    Benjol
    Resharper makes the need for this redundant as you can do Shift+Alt+L to jump directly to the current file in the Solution Explorer; or Ctrl+Shift+N to keyword search for any file in the Solution.
    cbp
    +26  A: 

    You can use the following codes in the watch window.

    @err - display last error
    @err,hr - display last error as an HRESULT
    @exception - display current exception
    
    Ferruccio
    Wow! I didn't know this one. That's fantastic, thanks
    MaseBase
    This one is neat.... Thanks.
    Arnis L.
    +22  A: 

    Stopping the debugger from stepping into trivial functions.

    When you’re stepping through code in the debugger, you can spend a lot of time stepping in and out of functions you’re not particularly interested in, with names such as GetID(), or std::vector<>(), to pick a C++ example. You can use the registry to make the debugger ignore these.

    For Visual Studio 2005, you have to go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio \8.0\NativeDE\StepOver and add string values containing regular expressions for each function or set of functions you wish to exclude; e.g.

    std\:\:vector.*\:\:.*
    TextBox\:\:GetID

    You can also override these for individual exceptions. For instance, suppose you did want to step into the vector class’s destructor:

    std\:\:vector.*\:\:\~.*=StepInto

    You can find details for other versions of Visual Studio at http://blogs.msdn.com/andypennell/archive/2004/02/06/69004.aspx

    Charles Anderson
    Wow, this is awesome. I had no idea this was possible.
    j_random_hacker
    +20  A: 

    T4 (Text Template Transformation Toolkit). T4 is a code generator built right into Visual Studio

    Shiju
    Note: Not the Express Editions. (Still a great tip though.)
    j_random_hacker
    +7  A: 

    To display any chunk of data as an n-byte "array", use the following syntax in Visual Studio's QuickWatch window:

    variable, n
    

    For example, to view a variable named foo as a 256-byte array, enter the following expression in the QuickWatch window:

    foo, 256
    

    This is particularly useful when viewing strings that aren't null-terminated or data that's only accessible via a pointer. You can use Visual Studio's Memory window to achieve a similar result, but using the QuickWatch window is often more convenient for a quick check.

    Emerick Rogul
    +2  A: 

    Here is the Macro source for my aspx/aspx.cs flipper. It works in 2005, but it may have issues in 08.. I'm not sure... This was taken from my other cpp/h flipper, so there might be some clean up needed to make it the best it could be. I'm not paid to write Macros, so I have to blast though them as quickly as possible when I need one.

        Sub OpenASPOrCS()
        'DESCRIPTION: Open .aspx file if in .cs file, open .cs file if in .aspx file
        On Error Resume Next
    
        ' Get current doc path
        Dim FullName
        FullName = LCase(ActiveDocument.FullName)
        If FullName = "" Then
            MsgBox("Error, not a .cs or asp file!")
            Exit Sub
        End If
    
        ' Get current doc name
        Dim DocName
        DocName = ActiveDocument.Name
    
        Dim IsCSFile
        IsCSFile = False
        Dim fn
        Dim dn
        If (Right(FullName, 3) = ".cs") Then
            fn = Left(FullName, Len(FullName) - 3)
            dn = Left(DocName, Len(DocName) - 3)
            IsCSFile = True
        ElseIf ((Right(FullName, 5) = ".aspx") Or (Right(FullName, 5) = ".ascx")) Then
            fn = FullName + ".cs"
            dn = DocName + ".cs"
        Else
            MsgBox("Error, not a .cs, or an asp file!")
            Exit Sub
        End If
    
        Dim doc As EnvDTE.Documents
    
        DTE.ItemOperations.OpenFile(fn)
        doc.DTE.ItemOperations.OpenFile(fn)
    
        If Err.Number = 0 Then
            Exit Sub
        End If
    
        ' First check to see if the file is already open and activate it
        For Each doc In DTE.Documents()
            If doc.Name = dn Then
                doc.Active = True
                Exit Sub
            End If
        Next
    
    End Sub
    
    LarryF
    A: 

    I updated my code flipper, I posted earlier. I added support for ASP Controls.

    Larry

    LarryF
    +1  A: 

    The Open button in the File Open dialog has a little down arrrow next to it. Click that and you get the "Open With" option which includes the Binary Editor. As a systems-type guy, I find it quite valuable, but most of my colleagues hadn't known about it until I showed them.

    AShelly
    New to me! +1.
    j_random_hacker
    +13  A: 

    TAB key feature.

    1. If you know snippet key name, write and click double Tab. for example: Write

      foreach

    and then click tab key twice to

    foreach (object var in collection_to_loop)
    {
    
    }
    

    2. If you write any event, write here

            Button btn = new Button();
            btn.Click +=
    

    and then click tab key twice to

    private void Form1_Load(object sender, EventArgs e)
    {
            Button btn = new Button();
            btn.Click += new EventHandler(btn_Click);     
    }    
    void btn_Click(object sender, EventArgs e)
    {
            throw new Exception("The method or operation is not implemented.");
    }
    

    btn_Click function write automatically

    ebattulga
    +2  A: 

    Ctrl+L deletes the current selected line. This is an awesome time saver (if used responsibly of course!!!)

    Conrad
    Unfortunately it *cuts* the current line, pwning your clipboard. I really wish there was a command that just deleted the current line...
    teedyay
    Shift + Delete works for me...
    Kevin Thiart
    And Ctrl + X while nothing is selected cuts the current line. Same for copy.No need to remember any new letters of the alphabet then.
    Kevin Thiart
    Shift+Ctrl+L deletes the current line without putting it in the clipboard. (From SLaks's answer.)
    j_random_hacker
    +2  A: 

    Ctrl-M + Ctrl-L Toggle Collapse All - Expand All

    davidnr
    +1  A: 

    Re: Stopping the debugger from stepping into trivial functions.

    In C#, you can also add an attribute [DebuggerStepThrough] (using System.Diagnostics) to a method. This causes the debugger to, ironically, not step through the method.

    Lennaert
    +8  A: 

    Document Outline in the FormsDesigner (CTRL + ALT + T)

    Fast control renaming, ordering and more!

    Pondidum
    I can't believe I didn't know about this. My life is changed.
    Yoely
    +13  A: 

    Custom IntelliSense dropdown height, for example displaying 50 items instead of the default which is IMO ridiculously small (8).

    (To do that, just resize the dropdown next time you see it, and Visual Studio will remember the size you selected next time it opens a dropdown.)

    Brann
    You can't resize it anymore in VS2010, it bug me to no end.
    manixrock
    in Vs2008 I'm able to change the width but not the height .
    Kapilg
    +2  A: 

    Ctrl-T swaps the last two letters. For example, "swithc" -> "switch".

    Wow. so much useless in just one feature :) thanks :)
    shoosh
    @Shoosh, it's quicker than prinft m_variablena "woops!", backspace, backspace, backspace, backspace, backspace, backspace etc...
    Benjol
    Actually i just tried this in VS 2008 and it seems to swap the two letters that are on either side of the cursor, so if you have switch and the cursor is between the w and i Ctrl-T makes it siwtch.
    John C
    +1  A: 

    Reference tag of Visual Studio 2008 for JavaScript IntelliSense is a brand new hidden feature. Especially jQuery IntelliSense is a devastating!

    Canavar
    +10  A: 

    Line transpose, Shift-Alt-T
    Swaps two line (current and next) and moves cursor to the next line. I'm lovin it. I've even written a macro which changed again position by one line, executed line transpose and changed line position again so it all looking like I swapping current line with previous (Reverse line transpose).

    Word transpose, Shift-Ctrl-T

    Dmitriy Matveev
    wacky !
    Alex Baranosky
    This makes the line move down the page, how do you make a line move UP the page?
    Alex Baranosky
    GordonG, I've written following macro: Sub ReverseLineTranspose() DTE.ActiveDocument.Selection.LineUp DTE.ExecuteCommand ("Edit.LineTranspose") DTE.ActiveDocument.Selection.LineUp End Sub
    Dmitriy Matveev
    Lettre transpose = Ctrl-T
    Benjol
    Could do with it here as it turns out :)
    Benjol
    +2  A: 

    Ctrl+Shift+L deletes the current line (without cutting it to the clipboard)

    SLaks
    +3  A: 

    You can drag down the little gray box above the vertical scrollbar to split the window into two views of the same file, which can be scrolled independently - great if you're comparing two parts of the same file.

    SLaks
    This is awesome for web stuff, such as keeping css/javascript in the top portion and the HTML in the bottom. Also for rewriting a long method, you can keep the "old" version in one area for reference while you write the new one in the other pane.
    goldenratio
    +1  A: 

    CTRL-G for jumping to a specific line number. Saves a few seconds when you've got a line number in a large code file.

    Charlie Salts
    It works on notepad too.
    sunglim
    @sunglim - You're right! I haven't used notepad in years, though.
    Charlie Salts
    +2  A: 

    View, Code Definition Window.

    The Code Definition Window shows the definition of the currently selected identifier (If it's in your solution, it'll show your sourced; otherwise, it'll extract metadata, like right-click, Go To Definition)

    SLaks
    +2  A: 

    I see that lot of us are posting shortcuts. I have printed this poster, it's very helpful to learn those shortcuts - nowadays I look very rarely at the poster 'cause I've learned most of them :)

    Link for VS posters:

    http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=c15d210d-a926-46a8-a586-31f8a2e576fe

    My favourites are Refactoring ones (CTRL-R + Something)

    m1k4
    +3  A: 

    View, Other Windows, Object Test Bench

    The object test bench can be used to execute code at design-time.

    You can right-click on a type in Class View, click Create Instance, and select a constructor. You can then supply values for its parameters, if any, and the instance will show up in the Object Test Bench.

    You can also call static methods by right-clicking a type and clicking Invoke Static Method.

    In the Object Test Bench, you can right-click on an object to call methods, and you can hover over it and see its structure (like you can when debugging). You can also assign to and interact with these variables in the Immediate window, also at design time.

    This feature can be useful when writing a library. Please note that to use this, your solution must be compile first.

    SLaks
    +1  A: 

    I wanted to talk about comment (Ctrl + k, Ctrl + c) and uncomment (Ctrl + k, Ctrl + u) shortcuts but a Bratt (:p) already mentioned them.

    How about the Ctrl + k, Ctrl + d shortcut, very convenient to format markup (ASP.NET, HTML) and JavaScript code!

    elpipo
    +1  A: 

    I don't know how unknown most people consider them to be, but I don't think that a lot of people use snippets.

    I discovered them a while back and then found that they were customizable by editing the xml in the Visual Studio Program Files directory. They make it super easy to add a lot of code quickly.

    Also, to save time when using snippets make sure you hit tab twice and not try to do everything through the right click menu.

    Dusty
    You can also put them in MyDocs\Visual Studio 200?\Code Snippets
    SLaks
    Ahh, good point. :)
    Dusty
    You can see some snippets here: http://stackoverflow.com/questions/15111/do-you-have-any-recommended-code-snippets-for-microsoft-visual-studio/
    SLaks
    +2  A: 

    One that I only just discovered. When dealing with COM it's possible to lookup a brief message from the cryptic hexadecimal error number using a tool called errlook.exe.

    The useful tool is located in your VS\Common7\Tools directory.

    Ian
    You can run it with Tools -> Error Lookup
    Amnon
    +4  A: 

    .NET debugger allows you to give objects identifiers, and to refer them via those identifiers later during the session. To do so, you right-click on the variable (or expression) referencing the object in Autos/Locals/Watch window, or in the tooltip, and select "Create Object ID". IDs are sequential integer numbers, starting from 1, and suffixed by "#" - e.g 1# will be the first ID you create.

    After the ID is created, if the object is associated with a given ID, it is displayed in parentheses.

    You can use 1# to reference the object by ID anywhere you can normally use expressions - in Watch window, in condition of a conditional breakpoint, and so on. It's most handy when you want to set a breakpoint on a method of some particular object only - if you can first track the object creation, or some other place where this particular object is referenced, you just create the ID for it, and then set a new breakpoint with condition such as this==1#.

    Pavel Minaev
    +3  A: 

    Dynamic XSLT Intellisense

    A very little known fact is that Visual Studio 2008 does support real XSLT intellisense - not a static XSLT schema-based one, but real dynamic intellisense enabling autocompletion of template names, modes, parameter/variable names, attribute set names, namespace prefixes etc.

    For all versions of VS I like

    Ctrl + Shift + V

    for copying data in clipboard cycle.

    rahul
    Cool, didn't know control-shift-v.
    Noon Silk
    +7  A: 

    Here's something I learned (for C#):

    You can move the cursor to the opening curly brace from the closing curly brace by pressing Control + ].

    I learned this on an SO topic that's a dupe of this one:

    “Hidden Secrets” of the Visual Studio .NET debugger?

    Jay Riggs
    "Ctrl + [" didn't work for me... "Ctrl + ]" did, though!
    Robert
    You're right. Thank you. I fixed it.
    Jay Riggs
    Very nice feature! Thanks!
    botismarius
    +8  A: 

    I don't use it often, but I do love:

    ctrl-alt + mouse select
    

    To select in a rectangular block, to 'block' boundaries.

    As noted in comments,

    alt + mouse select
    

    Does just a plain rectangular block.

    Noon Silk
    A downvote is amusing, given that this is a valid action in VS :) Good luck to you though, mysterious hater.
    Noon Silk
    +1 from me for this.
    rahul
    Maybe it's a bit early, but reading this made me want to try it on Firefox. Turns out, ctrl-alt-shift allows you to use the mouse to drag the entire document across the screen, similar to how a PDF document works.
    WebDevHobo
    How does it differ from alt + mouse select?
    Guffa
    Guffa: It goes to block-endings only. alt-select lets you choose any area containing anything. They are different.
    Noon Silk
    Though I do think it can just be 'ctrl-alt', not 'shift' as well.
    Noon Silk
    It's actually just Shift+Alt in Firefox.
    goldenratio
    +2  A: 

    I don't know how 'hidden' this is, but some newew people may not know about coniditonal breakpoints.

    Set a breakpoint, then right click it, and choose Condition, then enter an expression like:

    (b == 0)
    

    And it will only fire when that is true. Very useful when trying to debug a certain stage of a loop.

    Noon Silk
    Better to provide this as an edit to your existing answer.
    rahul
    I think the general approach in these threads is to put one answer per comment, so people can rank them individually. I'm not getting any more points today via upvotes anyway, so it doesn't bother me either way :)
    Noon Silk
    +2  A: 

    There is this blog on MSDN thats got some nice tips and tricks

    http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx

    obelix
    +2  A: 

    The existence of the Resharper add-in. It makes working with Visual Stupidio less of a pain :)

    It's not really a hidden feature, but worth mention nonetheless as it comes with tons of these tricks and hotkeys.

    Bryan Menard
    A: 

    Vertical selection with Ctrl-Left Click is pretty useful sometimes...

    Soo Wei Tan
    A: 

    Shift + Delete to cut whatever line the cursor is on.

    I use this all the time to delete whole lines of code.

    RodH257
    Do you know the hot key to delete the whole line without putting it into clipboard?
    Nam Gi VU
    +1  A: 

    Mouse Left Click resets your cursor to the position your pointer is currently hovering. Very useful for navigating through Visual Studio.

    Alex
    +1  A: 
    • Vertical split of the window using "New Window" and "New Vertical Tab Group" combination.

    There is only horizontal split in VS by default, but trick with window duplication allows to use vertical split too.

    • Vertical selection is good (it accessible with keyboard too: Alt+Shift+[Ctrl]+Arrows). But sometimes I need to use Vertical Copy/Cut and Paste. VS is smart enough to handle this correctly.

    • There are also very useful features: Go Next/Prev Scope (Alt+Down/Up), Go to Implementation (Alt+G), but they are a part of the Visual Assist X plug-in.

    zxcat
    +3  A: 

    In the watch window, you can view the current exception even if you have no variable to hold it by adding a watch on $exception

    Pierre-Alain Vigeant
    Now *this* is golden.
    Beska
    +2  A: 

    I'm surprised no one has mentioned this yet. I find the ability record and play back a series of actions very, very helpful sometimes. Like if I'm applying some repetitive action to a few lines in a text file.

    For example

    Ctrl+Shift+R (start recording macro)

    perform a series of keystrokes

    Ctrl+Shift+R (stop recording macro)

    later....

    Ctrl+Shift+P (play back keystrokes)

    This approach is ideal for a short, one time manipulations. If it's something more involved or needed more than once, I'll write a script.

    Matthew Sposato
    I'd like to use your tip to delete a line quickly! Currently VS just provide hotkey to cut a line. Your tips is a quick way to add a temporary shortcut (i.e. Ctrl-Shift-P).
    Nam Gi VU
    I also use this tips to quickly open the Pending Changes pane.
    Nam Gi VU
    A: 

    I just wanted to copy that code without the comments.

    So, the trick is to simply press the Alt button, and then highlight the rectangle you like.(e. g. below).

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            //if (e.CommandName == "sel")
            //{
            //    lblCat.Text = e.CommandArgument.ToString();
            //}
        }
    

    In the above code if I want to select :

    e.CommandName == "sel"
    
    lblCat.Text = e.Comman
    

    Then I press ALt key and select the rectangle and no need to uncomment the lines.

    Check this out.

    Himadri
    +1  A: 

    Request: Anyone know how to shorten paths in the find window to be rooted at my solution folder instead of the drive? They're just too long.

    Damon A.
    ok, after looking through sara's site, I can answer this myself. Just awesome!http://blogs.msdn.com/saraford/archive/2008/11/24/did-you-know-you-can-customize-how-search-results-are-displayed-in-the-find-results-window-363.aspx
    Damon A.
    +5  A: 

    Middle Mouse Button Click on the editor tab closes the tab.

    Kevin Driedger
    That's pretty cool!
    shoosh
    I use this all the time when I'm coding because I'm looking up code and then closing it (the "X" for closing is rather far).
    Kevin Driedger
    A: 

    After having read through all these marvelous (and some repetitive) posts, I have some to add that I don't think I saw:

    CTRL+Z = undo

    CTRL+Y = redo

    ;-)

    Also, don't forget to modify the keyboard shortcuts! Tools > Options > Environment > Keyboard

    LOTS of goodies! I have F9 == stepinto, f10 == step over and f11 == step out. VERY useful.

    Another not cited that I use somewhat often (although most people probably have a toolbar with this button): f6 == Build Solution.

    Enjoy!

    Limited Atonement
    Also.. Ctrl+S to save the current file?
    shoosh
    Only a fool would use CTRL+S to do that. You must use CTRL+Shift+S to save ALL files! But really, these are trivial, I only will put the ones that are used frequently.
    Limited Atonement
    ;-) ............................
    Limited Atonement
    A: 
    Mostafa
    Not sure what you mean by Ctrl-K-D?
    Nam Gi VU
    "Selecting when you hold "Alt"." You just blew my mind.
    Matt Grande
    @Nam : When you copy some markup form some where else and past in your code , You lose indentation and some more thing , By Hitting Ctr +K+ D it reorganize again
    Mostafa
    +2  A: 

    Pseudovariables in the debugger: http://msdn.microsoft.com/en-us/library/ms164891.aspx

    $exception: avoids the need to give your exceptions names (and cause variable not referenced warnings).

    $user: tells you which user is running the application...sometimes useful when trying to diagnose permission issues.

    Brian
    +1  A: 

    How about Ctrl + C to copy the current line to the clipboard without doing any range selection. This is sooooo... simple and useful.

    Chathuranga Wijeratna
    @Wijeratna: Do you know how to quickly delete/move up/move down a line?
    Nam Gi VU
    A: 

    Just found out back and forward buttons on my mouse moves back or forward one document.

    Think I was wrong about this one. Only happens when searched for stuff.

    Pickels
    +4  A: 

    I accidentally found this one just now. When you are anywhere on a line and press Ctrl + Enter, it will insert a new line above the current line and move the cursor there.

    Also, if you press Ctrl + Shift + Enter, it will insert a new line below the current line and move the cursor there (similar to End, Enter)

    Nelson
    +1  A: 

    Ctrl + Shift + F brings up "search solution" dialog and lists all the results in a nice navigable way, rather than visiting each result. Not only it's easier to use, it's also useful because it doesn't tamper with your search scope defaults you use with regular search.

    ssg
    +1  A: 

    I'm sure everyone knows this, it's not just VS, you can do it almost everywhere. If you press Ctrl + left arrow/right arrow you will go to the next/last word word. You can also Ctrl + Shift + left/right arrow to select whole words at a time.

    Jose
    +2  A: 

    Close all documents other than the one your on by right clicking the doc's tab and selecting "Close All But This." You can do this in many other IDEs and browsers as well. Not a big feature but I find that I use it 10+ times a day. This feature was hidden from me for many years. I should map it to a keyboard shortcut :p

    Tim Santeford
    +3  A: 

    Ctrl + Delete deletes the whole word (forward)

    Ctrl + Backspace deletes the whole word (backward)

    The following is well known but am I wrong saying it hasn't been listed yet ?

    Ctrl + Shift + Space inside the parentheses of a method call gives you the parameter info.

    hoang
    +1  A: 

    Navigating around the references of a symbol in VS 2010: 1. Place your cursor at the symbol to high light all references 2. Ctrl - Alt - Up/Down to navigate backward/toward reference.

    ^_^

    Nam Gi VU
    A: 

    Ever want to see all the implementations of one interface member? Use "Call Hierarchy"!

    Nam Gi VU
    +4  A: 

    Ever want to look for a function in your current viewed file but there are too many member to browse? Need a filter? Then, the Navigate box is what you need. You activate it by Ctrl-, (comma).

    Nam Gi VU
    +4  A: 

    During debugging, Select an identifier or expressing and drag it to the watch window.
    Beats having to write it from scratch :)

    shoosh
    +2  A: 

    The features I like the most are

    1. Bookmarks feature. You can add/remove bookmarks in code(kinda like breakpoints), and you can navigate directly between them by using next/previous bookmark. Very useful if you are making changes in two places at once, and want to swap between the two frequently.
    2. The comment/uncomment feature. Ctrl+E , Ctrl+C/U for C# settings.
    3. The increase/decrease indent of a line. (Only available for VC by default. To assign for C#, go to tools -> Options -> General -> Keyboard and change the Edit.IncreaseLineIndent/Edit.DecreaseLineIndent for TextEditor)

    PS: I want to know how to navigate to the members drop down list (just below the tabs list) by the keyboard.

    apoorv020
    Ctrl+F2 then Tab
    Breandán
    +1 for the bookmarks feature (even though I don't think it is very hidden :])
    Default
    @michael : I haven't actually seen anybody else use it, and even I forget about it at times.
    apoorv020
    +3  A: 

    Ctrl+Tab - switch between open tabs/windows in Visual Studio 2005 & 2008.

    Kind of like Alt+Tab in Windows, brings up a little box just for the currently open VS files.

    Here's a sample screenshot:

    alt text

    wb947
    Use arrow keys to navigate between those tabs and windows (while tab is pressed)
    Default