Nedávno jsem školil na jednom kurzu a jak je mým zvykem, na začátku se ptám účastníků, jak dlouho programují v .NETu, jaké typy aplikací píšou a tak podobně. A vždycky mě překvapí, že i ostřílení vývojáři, kteří dělají ve Visual Studiu více než 5 let, se za tu dobu nenaučili ani ty základní klávesové zkratky, které šetří spoustu času. Proto jsem se rozhodl vypsat ty nejdůležitější.
Ctrl-X, Ctrl-C a Ctrl-V – co dělají, asi každý ví. Ne každý si ale všimnul, že když nemáte označen žádný text a zmáčknete Ctrl-X, vyjme to do schránky aktuální řádek. A Ctrl-V řádek vloží před ten, na němž aktuálně stojím. Velmi užitečná věc, která se hodí na různé věci – já pomocí ní kód mažu, ale používám to i na přesouvání řádků. Sice se se mnou už pár lidí hádalo, že například na duplikování řádků je lepší mít speciální klávesovou zkratku, já si myslím, že to je celkem jedno a že rozdíl v tom je sotva postřehnutelný – namačkat na klávesnici Ctrl-C,V není problém.
Ctrl-čárka – tato klávesová zkratka zobrazí okno, pomocí kterého můžete vyhledat soubory, třídy, metody a další věci v projektu. Podporuje i camel case hledání, takže stačí psát jen velká písmena z názvu – např. pokud chci najít CompaniesViewModel, stačí napsat CVM. Pokud chci hledat podle více slov, stačí je psát malými písmeny, např. comp reg najde CompanyRegistrationViewModel.
F12 – postavíte kurzor na název funkce, třídy, proměnné a po zmáčknutí F12 se provede akce Go To Definition, skočíte tedy na místo, kde je daná věc deklarována.
Ctrl-mínus – pokud často skáčete na různá místa v kódu, tato zkratka vás vrátí na předchozí pozici. Ideální po použití F12, vrátí vás to zase zpátky, ale použití je mnohem širší.
Ctrl-Shift-V – měli jste něco ve schránce, ale už je tam zase něco jiného? Zmáčkněte několikrát tuto zkratku a VS vám bude nabízet mezi několika posledními položkami ve schránce.
Ctrl-K,R – pokud máte kurzor například na funkci, tato klávesová zkratka vyvolá příkaz Find All References, objeví se okno, které ukáže, odkud danou funkci používáte.
Ctrl-Shift-F – Find In Files. Na rozdíl od klasického Ctrl-F toto zobrazí standardní vyhledávací okno a výsledky vypíše do speciálního podokna ve Visual Studia. Na jednom místě pak vidíte, kde jste v projektu nechali např. TODO komentáře. Kliknutím na řádek v tomto okně Visual Studio zobrazí skutečné umístění hledaného výrazu.
Ctrl-R,M – Extract Method. Označíte kus kódu, zmáčknete tuto zkratku, a Visual Studio vám nabídne vytvoření metody z označeného kódu.
Ctrl-tečka – Pokud někde použijete název, který neexistuje (např. neexistující funkci nebo třídu, která není naimportovaná v using namespace definicích), Visual Studio zobrazí takový miniaturní modrý obdélníček. V té chvíli můžete zmáčknout Ctrl-tečka, které zobrazí kontextové menu, v němž můžete vybrat jednu z možných akcí.
Umí to mimo jiné následující věci:
- vygenerovat třídu, metodu, konstruktor, property, field (proměnnou uvnitř třídy) – prostě použijte název, který neexistuje, a zmáčkněte Ctrl-tečka
- doplnit using definici na začátek souboru – napište název třídy z Frameworku nebo z nějaké referencované knihovny (včetně velkých a malých písmen), např. new WebClient, zmáčkněte Ctrl-tečka, a Visual Studio samo dogeneruje using System.Net;
- doplnit overridy abstraktních metod nebo metody předepsané rozhraním – napíšete public class A : TřídaNeboRozhraní a zmáčknete Ctrl-tečka.
ReSharper
ReSharper ještě více usnadňuje psaní kódu a použití Visual Studia. Dříve jsem tento doplněk neměl rád, ale zároveň jsem ho strašně chtěl používat. Pokaždé, když vyšla nová verze, jsem jej nainstaloval, bohužel kvůli své pomalosti a znestabilnění Visual Studia byl vždy do týdne pryč – aby se mi VS zasekávalo klidně na 20 sekund na počítači s 16GB RAM a SSD, na to jsem opravdu neměl nervy.
Verze 7 a 8 spolu s VS 2012 ale již těmito nedostatky netrpí (anebo jsem je nezaznamenal, zpomalení je sotva postřehnutelné oproti čistému Visual Studiu) a proto jsem si zhruba před půl rokem ReSharper nainstaloval a už jsem u něj zůstal. Je pravda, že je třeba strávit tak 2 hodiny nastavováním, aby dělal to, co potřebujete, nebo lépe řečeno aby nedělal to, co nechcete, nicméně pak se používá dobře.
ReSharper disponuje spoustou funkcí, tipnul bych si, že jich využívám jen tak 10%. Mezi nejoblíbenější patří:
Live Templates – něco jako code snippets, prostě předdefinované šablony kódu s placeholdery. Tyto jsou ale chytřejší a co je nádherné – můžete je definovat buď globálně, nebo per-solution. Používám to celkem často na některé project-specific konstrukty.
Alt-Enter – univerzální klávesová zkratka s podobnou funkčností jako Ctrl-tečka, akorát má mnohem více možností.
Extract Variable – Ctrl-R,V – označený výraz nadeklaruje jako proměnnou a pokud se ten samý výraz používá ještě někde, umí ho nahradit také. Velmi často používaná věc.
Ctrl-Alt-Shift-šipka nahoru/dolů – přesune aktuální metodu nahoru nebo dolů.
Práce s Resources – ReSharper umí string extrahovat do resources a upozorní vás, pokud není daná hláška přeložena do všech jazykových verzí.
Ctrl-W a Ctrl-Shift-W – Expand / Shrink selection – označí nejprve slovo a postupně rozšiřuje výběr až máte označenou např. celou metodu. Druhá klávesová zkratka dělá pravý opak – zmenšuje výběr na menší a menší logické celky.
Generate Equality Members – některé třídy potřebují implementovat metody Equals a GetHashCode – vyberete properties, podle nichž chcete porovnávat, a ReSharper vygeneruje jak funkci Equals (která je jednoduchá), tak i GetHashCode, kterou už člověk vymýšlí těžko.
Doplněk ForTea – ReSharper je rozšiřitelný pomocí pluginů a jeden z velmi pěkných doplňku je ForTea – podporuje obarvování kódu a IntelliSense pro T4 šablony. Subjektivně mi ten plugin přijde lepší než Tangible T4 Editor, i když tam jsem vždy používal jen free verzi, placená je určitě lepší.
Jaké jsou vaše oblíbené funkce, které šetří čas? Ať už v samotném VS, nebo v ReSharperu?