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ě jakoLineStartAfterIndentation
vynechá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.