Lekce 6 - Visual Studio - Pomocníci při psaní kódu
V minulé lekci, Visual Studio - Navigace v souborech, jsme se věnovali navigaci v souborech.
Visual Studio obsahuje spoustu nástrojů, které usnadňují psaní zdrojového kódu. Dnes se na některé z nich podíváme. Začneme se známým IntelliSense.
IntelliSense
IntelliSense je našeptávač, který umí procházet přímo knihovny .NET
Frameworku či jiných Frameworků a výchozí knihovny. Umí ale našeptávat i
ze všech zdrojových kódů v projektu. Pojďme si to zkusit. Budeme
pokračovat s projektem Karel z minula. Na řádek 24 začněte
psát cons... Visual studio zatím neudělá nic, aby nás od
psaní nerušilo. Zmáčkněme Ctrl + Mezerník, čímž
si vynutíme zapnutí IntelliSense:

Rozbalí se seznam možností automatického doplnění kódu. Jako první se
nachází const, ale to ještě není to co hledáme, proto
dopište písmeno o. Další shoda je Console, což je
to, to co hledáme, potvrďte Enter nebo Tab:

Visual studio slovo dokončí. Když zadáme tečku, Visual Studio již začne zkoumat, co vše se v konzoli nachází a co můžeme využít:

Začněte psát w. Již teď vám Visual Studio nabízí shodu s
W a zároveň pouze to, co můžeme použít v objektu
Console:

Všimněte si, že IntelliSense ukazuje i popisek, co daná
metoda/funkce/třída dělá a jaké jsou její parametry. Šipkami se v
IntelliSense můžete v nabídce orientovat. Posuňte se dolů o jednu na
WriteLine a potvrďte.
Udělejte kulatou závorku, editor ji dokončí, ale to nás nyní nezajímá. IntelliSense zjistil, že chceme psát parametry této funkci a tak nám "našeptá", co se do parametrů této funkce hodí. Šipka vlevo a počet signalizuje počet možností, jak můžeme parametry zapsat. Proklikejte se na 11. možnost zápisu, můžete použít šipky na klávesnici:

Popisek říká, že v tomto parametru se bude zadávat textový řetězec,
který metoda doplní zakončením řádku a odešle na standardní výstup.
Parametr se jmenuje value a jeho popisek říká, že to je právě
ta hodnota, která se vypíše.
Napišme uvozovku. Editor okamžitě doplní koncovou. A do uvozovek napište
nějaký text, třeba "Visual Studio je super". Dostaňte se
na konec řádku (jako klasicky ve Windows, klávesa End) a doplňte
středník ;.
Pokud seznam parametrů znáte, nemusíte nic proklikávat, IntelliSense to pozná a sám vybere nejvhodnější seznam parametrů, který vašemu zápisu odpovídá.
Kde se berou popisky?
Texty nápověd v IntelliSense se berou z dokumentačních komentářů
přímo ve zdrojovém kódu a budou se zobrazovat i u našich metod z projektu,
pokud nad ně napíšeme správný dokumentační komentář. Ten si lze nechat
vygenerovat pomocí napsání trojlomítka /// a ve výsledku
vypadá např. takto:
/// /// <summary>Třída <c>Uzivatel</c> je předek pro všechny uživatele systému.</summary> /// public class Uzivatel { /// <summary>Přihlásí uživatele</summary> void Prihlas() {...} }
Visual Studio případně vygeneruje i parametry pro metodu, pokud nějaké
má. Dokumentace se zapisuje v XML syntaxi a můžeme v ní používat různé
značky. Např. v ukázce výše se používá <c> pro
označení části textu, která bude zvýrazněna jako inline kód, jako třeba
zde v článcích. Dokumentace se poté lépe čte.
Ikony v IntelliSense
IntelliSense obsahuje spoustu ikon, které ukazují o jaký typ položky se jedná. U každého jazyka, platformy a technologie se ikony liší, některé technologie různé ikony nepoužívají. Celý seznam ikon a jejich význam se nachází v dokumentaci. V podstatě vám však stačí vědět, jak vypadá:
- Proměnná - Modrá kostička
- Třída - Žluto-oranžový diagram
- Vlastnost - Černý francouzský klíč a
- Metoda - Růžová kostička
Tyto ikonky uvidíte hodně často, takže si na ně rychle zvyknete. Určitě se je neučte všechny, je to zbytečné. Programuji ve Visual Studiu několik let a některé jsem v dokumentaci viděl poprvé.
Manipulace s řádky
V úvodu cvičení jsem vám řekl, ať za řádek 24 napíšeme nějaký kód. Řekněme, že jsem se spletl. Náš kód:
Console.WriteLine("Visual Studio je super.");
potřebujeme na řádku 15, hned za otevírající složenou závorkou. Nejspíš byste teď řádek vyjmuli a vložili, tam kde má být. My to ale uděláme chytřeji.
Přesun řádku nahoru nebo dolů
Pomocí klávesové zkratky Alt a šipka nahoru nebo dolů
řádek, na kterém se nachází kurzor, prohodíte buď s horním nebo dolním
řádkem. Jinými slovy řádek přesunete ve směru stisknuté šipky.
Přesuňme tedy řádek na začátek bloku za {.
Kopírování řádku
Řekněme, že řádek (pokud jste si dokument nerozbombardovali, tak by měl mít číslo 46) s kódem:
Console.ReadKey();
chceme mít dvakrát. Řešením je řádek zkopírovat. Ve Visual Studiu,
když nemáte nic vybraného a stisknete Ctrl + C,
zkopíruje se celý řádek. Pomocí Ctrl + V ho
samozřejmě vkládáme. Vložme ho 2× vždy za příkaz
Console.WriteLine bez parametru (řádky 25 a 35).
Vyjmutí řádku
S pomocí klávesové zkratky Ctrl + X můžeme řádek vyjímat stejným způsobem jako kopírovat. Tato zkratka obecně vymaže vybraný text a vloží ho do schránky, asi ji již znáte. Osobně ji častěji používám k odstraňování řádku, což se dá udělat i klávesovou zkratkou Ctrl + L.
Vymažme tedy původní příkazy Console.WriteLine (aktuálně
na řádcích 25 a 36).
Nastavení klávesových zkratek
V předchozích 3 podkapitolách jsem zmínil několik klávesových zkratek, které vám teoreticky nemusí vyhovovat. Proto si ukažme, jak si lze klávesové zkratky přenastavit. V nabídce Tools si otevřete nastavení (Tools -> Options) a přesuňte se do skupiny Environment -> Keyboard:

V pravé části okna máme možnosti nastavení klávesových zkratek. Hned
nahoře je schéma klávesových zkratek. Můžeme si zde vybrat schéma ze
starších verzí Visual Studií nebo verzí jazyků. V prostřední části je
pak seznam všech funkcí Visual Studia a ve spodní části lze jednotlivým
funkcím přiřadit klávesovou zkratku. Protože funkcí je hodně, je nad
seznamem vyhledávací políčko. Když už jsme u těch manipulací s řádky,
najdeme si slovo line:

V seznamu jsou funkce do sebe zanořené a oddělené tečkami. Zápis:
EditorContextMenus.CodeWindow.ExecuteLineInInteractive
tedy označuje nástroj ExecuteLineInInteractive, který se
týká nástroje CodeWindow a ten zas nástroje
EditorContextMenus.
Podstatné pro nás budou položky v nástroji Edit, což je
editor zdrojového kódu. Ve verzi 2013 Professional se jedná o nástroje
(vypište si nástroje, které vás zaujmou):
BreakLine- Zalomí řádek (klasický enter).LineUp,LineDown,LineStart,LineEnd- Posune kurzor na stejnou pozici o řádek níž/výš/na začátek řádku/na konec řádku.LineUpExtend,LineDownExtend,LineStartExtend,LineEndExtend- Vybere oblast od kurzoru ke stejnému místu na předchozím řádku/následujícím řádku/začátkem řádku/koncem řádku.
Ukažme si zde příklad. Pokud přejdeme např. na tuto pozici na řádku:

Po zavolání LineEndExtend získáme následující
výběr:

LineStartAfterIndentation- Chová se podobně jakoLineStart, ale někdy je začátek řádku mimo začátek řádku za odsazením. Tato funkce vynechá mezery nebo tabulátory dosazující řádek.LineStartAfterIndentationExtend- Chová se podobně jakoLineStartExtend, ale stejně jakoLineStartAfterIndentationvynechává odsazení řádku.LineLastChar- Posune kurzor na poslední znak příkazu. Jinými slovy vynechá středník, složené závorky a podobné znaky.LineLastCharExtend- Vybere oblast od kurzoru po poslední znak příkazu podobně jakoLineLastChar.
Opět si udělejme ukázku:

Po zavolání LineLastCharExtend je výběr následující:

ScrollLineUp,ScrollLineDown- Posune posuvník (scroll bar) o jeden řádek níže/výše.ScrollLineBottom,ScrollLineCenter,ScrollLineTop- Posune posuvník tak, aby řádek, na kterém je kurzor, byl na spodku/středu/vrchu obrazovky.
Opět příklad:

A výsledek po zavolání ScrollLineTop:

TabifySelectedLines,UntabifySelectedLines- Změní mezery za tabulátory a naopak.LineCut- Odebere řádek s umístěným kurzorem a vloží jej do schránky.LineDelete- Vymaže řádek s umístěným kurzorem.DeleteBlankLines- Ve vybrané oblasti odstraní prázdné řádky.LineOpenAbove,LineOpenBelow- Vloží nový řádek před/za řádek s umístěným kurzorem a na nově vzniklý řádek umístí kurzor.IncreaseLineIndent,DecreaseLineIndent- Zvýší/sníží odsazení řádku o jeden tabulátor.LineTranspose- Prakticky jen prohodí vybraný řádek s řádkem o jeden níže.LineStartAfterIndentationPrev,LineStartAfterIndentationNext- Přesune kurzor za odsazení předchozího/následujícího řádku.
Zkusme si opět nějakou z těchto funkcí:

A po zavolání LineStartAfterIndentationPrev:

Blokový výběr
Pro další funkce je dobré vědět, co je to blokový výběr (někdy označováno jako výběr sloupcový) a jak se vytvoří. Jedná se o to, že někdy potřebujeme vybrat oblast uvnitř řádků. Vezmeme si příklad tohoto textu:
+----+---------------+------------+ | ID | IP | DATE | +----+---------------+------------+ | 1 | 192.168.0.15 | 2015-02-05 | | 2 | 192.168.0.200 | 2010-03-15 | | 3 | 192.168.0.10 | 2009-09-09 | +----+---------------+------------+
Takový formát je výstupem různých exportů, atd. Řekněme, že z něj
potřebujeme jen sloupec IP. Za normálních okolností bychom
museli okolní sloupce pracně odmazat. Se znalostí vyhledávacích a
nahrazovacích nástrojů by to sice nebyl až zas takový problém, ale bylo by
to zbytečně pracné. Proto existuje blokový výběr, který funguje při
přidržení klávesy Alt a díky kterému si můžeme vybrat
libovolnou, obdélníkovou oblast v dokumentu:

Krom možnosti Alt + myš Visual Studio ještě obsahuje další funkce pro tento výběr:
LineUpExtendColumn,LineDownExtendColumn- Posune blokový výběr o řádek výše/níže.LineStartExtendColumn,LineEndExtendColumn- Posune blokový výběr k začátku/konci řádku.LineFirstColumn- Posune kurzor na první sloupce řádku (začátek řádku).LineFirstColumnExtend- Vybere oblast od kurzoru k prvnímu sloupci řádku.MoveSelectedLinesUp,MoveSelectedLinesDown- Posune vybrané řádky nahoru/dolů.
Funkce začínající na Emacs a Brief přebírají
funkce editorů Emacs a Brief, kterými se nebudeme
zabývat
Nastavování klávesových zkratek
Když máte vybrané funkce, které vám přijdou zajímavé, a chcete jich využívat, je dobré si k nim nastavit klávesovou zkratku. Když si je označíte ve spodní části funkcí, zvýrazní se políčko, kde jsou vypsány všechny klávesové zkratky. K jedné funkci totiž můžete mít přiřazených více klávesových zkratek. Pokud chcete nějakou odebrat, vyberete ji a stiskněte "Remove":

Pokud chcete přidat klávesovou zkratku, kliknete do políčka "Press shortcut keys" a stiskněte klávesu nebo klávesovou kombinaci. Vlevo od políčka pak ještě musíte vybrat kontext, kde bude klávesa funkční. Nejčastěji se jedná buď o okna (např. Solution Explorer) a editor kódu (Text Editor):

Po přiřazení se zvýrazní ještě třetí políčko, kde je vypsáno, kde všude je klávesa použitá, aby nedošlo ke kolizím (jedna klávesová zkratka použita u více funkcí).
Nastavte si klávesové zkratky podle libosti a vyzkoušejte si ty již nastavené. Do komentářů pod článkem můžete napsat, o kterých funkcích jste nevěděli, které vám přijdou užitečné, totálně zbytečné a jaké (chytré, aby se lépe zapamatovaly) klávesové zkratky jste si k nim nastavili.
V příští lekci, Visual Studio - Snippety, budou hlavní roli hrát snippety.
