Visual Studio Productivity 101 – Keyboard shortcuts

By | March 28, 2016

[This post was tranlated during rewriting blog to English language. Original Polish version is available below.]
[Ten post został przetłumaczony podczas zmiany języka bloga na angielski. Oryginalna, polska wersja posta jest dostępna pod spodem]

It doesn’t matter if you working with MVC, WPF or you’re XAML artist. As lons as you use Visual Studio it can be post that is dedicated to you. I’ll show you some of keyboard shortcuts that I’m using most offten. If you’re trying to limit using mouse while editing text, you proably know and/or use some of them. But if during editing text you rely on using mouse and you’ve never thought about changing it, I’ve try to drag you to dark side of the force, and show you that some things can be done different and in most cases much faster.

Let’s start with something about me. I’m person which constantly refines everything that I do offten enough, to save some time with minor optimizations. Someday, somehere, someone thought in a very similiar way and realized that some of most offten used function can be binded to defined keyboard shortcuts and access them much faster. There are some people who use them very intensively, and there’s some people that doesn’t because they prefer to use mouse. And i’m not intending to demonize mouses because they are amazing pieces of equipment, but sadly not so much during editing text.

Selecting block of text with mouse will never be as fast and precise as combining ctrl, shift and some old fashioned cursors. And if you don’t know how to properly select text using those I’ll insist that you practice it a bit before further reading.

While editing text you proably using two hands (unless you’re using one finger to do this, but then you proably doesn’t use Visual Studio). To even grab a mouse you need to remove one hand from keyboard and move it a bit. It may sound like exaggeration, but this movement in most cases is absolutely needles and can be replaced with proper keyboard shortcut, and with some practice shortuts are so automated and intuitive as writing normal words.
Let’t go down to the business and start with some shortcuts that I’ve been using most commonly. Some of them are well known but I’m starting with the basics (well, not absolute basics like ctrl + .), and if this post will be popular I’ll sit and work on second part with some more examples (Noted during translation: Post was indeed popular, and second part is coming soon).

During writing this post I’ll write some comma delimited shortcuts like “Ctrl + E, C” which means you should press Ctrl + E first and then press C. I’ve used all shortcuts below in Visual Studio 2015 and they work for me allthough some of them can be overwritten by some extensions (like Ctrl + , with Resharper) or change slightly in other Visual Studio versions/configurations.

  • Selecting and editing multiple lines/block of code simultaneously – Alt + Shift + Cursors (Alt + Left Mouse Button)

    Shortcut that I’m using very offten during creating new classes just like show in gif image. You can use it with keyboard shortcut or holding alt and LMB, which will allow to selecting blocks of code as simply as some icons on your desktop. 

  • Creating constructor – ctor snippet

    Snippets can make your code appear from thin air and if you’re not using them you should read some more on MSDN. Creating new, blank constructor is as simple as writing four letters ctor and tapping tab key two times. In VS the is A LOT of snippets and if we’re lacking some, we can define our own.

  • Deleting entire line – Shift + Del
    Too much empty lines in code does not look very aesthethic, and if you’re deleting them by just selecting and using del/backspace, you can make a mess in you code(indents to be specific) if you’ll have minor lapse of attention. Much simpler and faster solution is placing cursor in line that you want to remove and pressing Shift + Delete. Entire line will dissapear and no surrounding code will be affected, like it was never there in the first place.

  • Format entire document/selection- Ctrl + E, D / Ctrl + E, F (In some configurations it’s Ctrl + K, D i Ctrl + K, F)

    Well, why would you listen to me? Lets select some lines and mash backpace and delete furiously. And something that shouldn’t be selected just became selected (by itself!). Code will have strange indents in place they shouldn’t be and some indents will just dissapear. And brackets? Don’t event start about brackets. Your code just became messy as hell and someone should do something about it. You could just use this shotcut and poof, done! Well… in most cases.
    And if you have some rules or habits about formatting code, you could always go into menuTools > Options > Text Editor > C# > Formatting (and similiar for other languages) where you can customize auto code formatting.

  • Moving entire line up/down- Alt + Up/Down

    Great thing about this shortcut is you can place blocks of code in loops or try/catches by just moving them around. Just remember you’re moving entire line (or some of them), not just selection. If you get used to it it can make your life much easier.

  • New line without breaking current line – Shift + Enter

    Sometime you just need to create new line underneath without breaking current line. There is much faster way than moving your cursor around. Just use Shift + Enter to do it fast and smooth.
    You can try Ctrl + Enter too if you want to go to line above.

  • Add/remove comment for selection – Ctrl + E,C / Ctrl + E,U (In some configurations Ctrl + K, C i Ctrl + K, U)

    You could select block of code with mouse, you could right click it, find option in dropdown menu and use it. Or you could just a shortcut and mark/unmark something as comment instantly.

These shortcuts are just tip of an iceberg of what Visual Studio has to offer. There is a lot of them and other helpfull functions, and I’ll include link with list of all VS keyboard shortcuts below. If my readers will be interested in this post I’ll continue this subject in near future, because there is so much people that does not know those features and tricks that makes lifes much easier and coding much faster (Note during translation: second part of this post is comming soon).

Below you will find another few helpful shortcuts without gifs and descriptions, because there are pretty much self-explanatory. 

  • Force show Intellisense dropdown – Ctrl + J

  • Insert snippet from list – Ctrl + K, X

  • Go to class/method definition or fast preview (Alt + F12) – F12/ Alt + F12

  • Move cursor to matching parenthesis – Ctrl + ] (while cursor is on any parenthesis)

Linki

[PL]

Dziś temat dla każdego. Nie ważne czy pracujesz z MVC, WPF czy tworzysz kontrolki w XAMLu, przynajmniej tak długo jak używasz w tym celu Visual Studio. Pokażę Ci kilka z najczęściej używanych przeze mnie skrótów klawiszowych i metod, które znacznie ułatwiają i przyspieszają pracę. Jeśli tak jak ja starasz się jak najbardziej ograniczyć się do używania wyłącznie klawiatury pracy z tekstem, to pewnie korzystasz i/lub znasz sporą część z nich, ale jeśli dużo korzystasz z myszy i nigdy nie przyszło Ci do głowy, by przestawić się na nieco inny tryb pracy, to postaram się przeciągnąć Cię na ciemną stronę mocy i pokazać, że można to robić nieco inaczej.

Zacznijmy od tego, że jestem osobą, która stara się ciągle usprawniać to co robi. Wciąż szukam nowych rozwiązań, sposobów i możliwości, by pewne rzeczy zoptymalizować. Ktoś, kiedyś myślał w podobny sposób jak ja i wymyślił, że najczęściej używane funkcje można podpiąć po różne skróty klawiszowe. Są ludzie, którzy z nich korzystają i tacy, którzy ograniczają się do niezbędnego minimum, a jedną ręką kurczowo ściskają gryzonia. Nie będę demonizował myszek, bo jest to narzędzie niezastąpione przy wielu czynnościach i jest tak samo ważne jak klawiatura. Niestety nie wtedy, gdy mamy do czynienia z pracą z tekstem.

Zacznijmy od tego, że zaznaczanie bloku tekstu przy użyciu myszy nigdy nie będzie tak precyzyjne i szybkie jak kombinacja ctrla, shifta i czterech kursorów(jeśli nie umiesz z nich korzystać do zaznaczania to zachęcam do nadrobienia zaległości przed dalszą lekturą). Dodajmy do tego fakt, że do pisania używamy na ogół obu rąk i by w ogóle sięgnąć po mysz, najpierw musimy oderwać jedną z nich. Zabrzmi to trochę jak przesada, ale jest to ruch zbędny, który w większości przypadków można zastąpić skrótem, który nie wymaga od nas odrywania rąk od klawiatury i przy odrobinie wprawy jest całkowicie automatyczny, zupełnie jak telepatyczne połączenie z komputerem.

Przejdźmy jednak do rzeczy i zacznijmy od najczęściej używanych przeze mnie ułatwień. Część z nich jest szeroko znana, ale ruszam temat od podstaw (pomijając może ctrl + .), jeśli wzbudzi jakieś zainteresowanie, to chętnie usiądę kiedyś do drugiej części z bardziej zaawansowanymi technikami.

Małe info w kwestii zapisu skrótów. Ctrl + E, C oznacza, że najpierw należy wcisnąć Ctrl + E i dopiero potem C. Ze wszystkich skrótów korzystałem w Visual Studio 2015 i “u mnie działa”.

  • Edycja kilku linii/bloku kodu – Alt + Shift + Kursory (Alt + LMB)

    Funkcja, której zdarza mi się używać stosunkowo często przy tworzeniu nowych klas w podobny sposób jak na gifie. Można jej używać wyłącznie z poziomu klawiatury lub korzystając z alta i lewego przycisku myszy, co pozwala nam zaznaczać bloki kodu w sposób podobny jak pliki w okienkach.

  • Tworzenie konstruktora – ctor snippet

    Snippety naprawdę przyspieszają pisanie kodu i jeśli z nich nie korzystasz, to zachęcam do zapoznania się ze stroną im poświęconą na MSDN. Wystarczy wpisanie liter ctor oraz dwukrotne stuknięcie w Tab, by naszym oczom ukazał się pusty, gotowy do wypełnienia konstruktor. W Visualu jest całe mnóstwo snippetów, a gdyby nam jakiegoś brakowało, to możemy sobie stworzyć własne

  • Usuwanie całej linii – Shift + Del
    Puste linie nie wyglądają zbyt estetycznie w kodzie, a ich usuwanie przez zaznaczanie i zwykły del/backspace może przy chwili nieuwagi wprowadzić sporo chaosu we wcięcia kodu, co wygląda jeszcze gorzej. O wiele prostszym i szybszym rozwiązaniem jest umieszczenie kursora w pustej linii i skorzystanie z Shift + Del. Cały wiersz zniknie i nie będzie miał wpływu na układ kodu dookoła.

  • Formatowanie dokumentu/zaznaczenia – Ctrl + E, D / Ctrl + E, F (W starszych wersjach podane jako Ctrl + K, D i Ctrl + K, F)

    Oczywiście nikt mnie nigdy nie słucha, lepiej zaznaczyć i wywalić kilka linii na pałę, a w kodzie pojawiają się dziwne wcięcia lub znikają te całkowicie normalne i potrzebne, bo przypadkiem zaznaczyło się coś co nie powinno (samo!). Całe szczęście nie trzeba wyrównywać wszystkiego ręcznie i powyższy skrót odwali za nas większość roboty. Tu przy okazji dodam, że jeśli macie jakieś specyficzne przyzwyczajenia lub wymagania dotyczące układu kodu, to w menu Tools > Options > Text Editor > C# > Formatting (i analogicznie dla innych języków), znajdziecie mnóstwo możliwości dostosowania ustawień tego typu do własnych potrzeb.

  • Przesuwanie całej linii w górę/dół – Alt + Up/Down

    Naprawdę świetna sprawa na umieszczanie bloków kodu w pętlach lub try/catch lub zwyczajną zmianę kolejności przy porządkowaniu kodu. Pamiętaj tylko, że przenoszona jest cała linia (lub zaznaczenie), a nie tylko znaki przed/za kursorem. Wymaga nieco przyzwyczajenia się, ale nie wyobrażam już sobie porządków w kodzie bez tej funkcji. 

  • Enter bez łamania linii – Shift + Enter

    Czasem przydatne jest stworzenie nowej linii tuż pod tą, w której jesteśmy i nie przełamywanie jej przy okazji. Shift + Enter sprawdza się w wielu sytuacjach i warto się do niego przyzwyczaić.

  • Dodanie/usuwanie komentarza dla zaznaczenia – Ctrl + E,C / Ctrl + E,U (W starszych wersjach Ctrl + K, C i Ctrl + K, U)

    Szybka zmiana bloku kodu na komentarz lub na odwrót ma swoje zastosowania. Dotyczy całego znaczenia lub linii, w której znajduje się kursor jeśli zaznaczenie nie jest aktywne.

Te kilka skrótów nie wyczerpuje listy dostępnych ułatwień w Visual Studio. Jest ich mnóstwo i pełną listę umieszczę w linkach na końcu posta. Poniżej umieszczę jeszcze kilka ze skrótów, z których zdarza mi się korzystać i które ułatwiają mi życie na co dzień, ale bez opisów i pięknych gifów, bo są w zasadzie oczywiste. Jeśli temat spotka się z zainteresowaniem, to z pewnością go rozwinę, bo zauważyłem, że nawet wśród osób mających spore doświadczenie w .NET zdarzają się takie, które nie korzystają z różnego rodzaju skrótów i ułatwień.

  • Wymuszone pokazanie okna Intellisense – Ctrl + J

  • Wstawienie snippetu z listy – Ctrl + K, X

  • Przejście do definicji klasy/metody lub jej szybki podgląd (Alt + F12) – F12/ Alt + F12

  • Przeniesienie do drugiego, pasującego nawiasu – Ctrl + ]

Linki