Znát velmi dobře IDE, se kterým pracujete deno denně, je pro vaši produktivitu zcela zásadní. Poslední rok mne utvrdil v tom, že přesto že IntelliJ Ideu používám už několik let, přesto je plno věcí, které nevím a které mi nakonec ušetří plno práce. Příkladem budiž pár klávesových zkratek o kterých jsem absolutně nevěděl a které jsem se dozvěděl teprve z DZone IntelliJ Cheatsheetu od Hamleta D’Arcyho – kupříkladu:
- Ctrl+Shift+Insert – vertikální výběr oblasti (skvělé pro hromadné úpravy CSV souborů, SQL apod.)
- Ctrl+Shift+U – změna case vybraného textu (tzn. na upper-case nebo lower-case)
- Ctrl+Alt+Left, Ctrl+Alt+Right – posun na předchozí / následující lokaci kurzoru (používal jsem ikony) – skvělé pokud si prohlížíte jinou část třídy, včetně přesunutí kurzoru a pak se chcete vrátit rychle zpět
- F11 – vložení rychlého bookmarku do kódu, který se vám ukazuje po pravé straně a je možné se na něj rychle vrátit
Možná, že teda i já vím pár věcí, které tak úplně známé nejsou, a třeba někomu z vás pomůžou.
Začněme třeba s prací s VCS a revizemi – u nás používáme CVS, ale řekl bych, že tyto věci budou přenositelné i na SVN a další VCS systémy:
1. Revize přístupné z kódu
V editoru kódu máte hned po levé straně informaci o tom, jaké změny jsou v aktuálním kódu oproti poslední revizi ve VCS. Jedním klikem můžete pak můžete vrátit změny dané části na původní verzi uloženou v CVS, rychle porovnat změny nebo si původní verzi vložit do schránky.
2. CVS / SVN Bar
Plno šikovných operací s CVS je skryto až na druhé úrovni popup menu apodobně. Pro rychlý přístup k těmto operacím je možné si nainstalovat plugin CVS / SVN bar, který vám nejčastější operace (přidat soubor do CVS, commit / update / rollback, show history, diff) zpřístupní v nástrojovém menu.
3. Vybavení naposledy vložených komentářů při commitu
Je zajímavé, že o téhle fíčurce jsem nevěděl strašně dlouho a při diskusi s dalšími vývojáři jsem zjistil, že ani oni ji moc neznali. V commit dialogu se vám nabízí vždy jen poslední vložený komentář, jak ale vyvolat starší historii komentářů (často potřeba, když se pracuje na více tascích najednou)? Magické tlačítko jsem označil červeným kroužkem:
4. Change listy / Shelf
Change listy jsou skvělým nástrojem, pokud pracujete na více věcech najednou, nebo máte právě rozpracovánu novou funkcionalitu a potřebujete pro kolegy udělat rychlý hotfix. Hodí se taky pro změny, které děláte v souborech, které jsou součástí VCS, ale u kterých nechcete abyste je omylem commitnuli (např. rychlé nastavení nějakých property pro vaše lokální vývojové prostředí apod).
Práci se shelvem (poličkou?!
) ukazuje skvěle Václav Pech v 5ti minutovém demíčku.
Co se týká change-listů, tak ty používám v případě, že potřebuju oddálit commit některých souborů. Jednoduše je přesunu do odděleného changelistu a při průběžných commitech už nemusím řešit odškrtávání těchto souborů v commit listu. Jde především o to, že při běžné práce by se mi určitě brzy stalo, že bych je omylem commitnul. Často mám totiž rychlejší ruce než mozek.
5. Historie revizí
Můj oblíbený nástroj, při kterém obvykle vyslovuji větu „ze mě nikdo blbce dělat nebude“. Pokud člověk potřebuje zjistit, kdo ve zdrojovém souboru provedl tu změnu, která dle všech zůčastněných vznikla sama od sebe je historie skvělý nástroj, jak tomu přijít na kloub:
Stejně často tento přístup používám, pokud se sám potřebuji vrátit k nějaké předchozí revizi, nebo když potřebuji zjistit, jakého člověka se mám zeptat na důvody a detaily konkrétní implementace v kódu. Bez této funkce se podle mého názoru prostě nedá obejít.
6. Lokální historie
V každém případě pro vás Idea udržuje lokální historii, takže přestože commity do CVS děláte jen čas od času, máte k dispozici daleko jemnější pohled na změny v kódu mezi revizemi.
Ani nemusím říkat, kolikrát mi tahle funkce zachránila plno času v případě souborů, které jsem do VCS ještě necommitnul. Obvykle ji používám spíše jako poslední záchrannou brzu – je tu sice ještě možnost pojmenovat si stav lokálních změn (Put label) – tedy něco jako lokální tag, ale tu používám málokdy, protože obvykle radši straním plnohodnotným tagům v CVS.
Jedinou nevýhodou (ale logickou) je to, že v lokální historii pracujete vždy jen s aktuálním souborem – tj. pokud se potřebujete dostat zpět do určitého stavu u více souborů, musíte po jednom. Nicméně v takových situacích, ve kterých tuto funkci používám já, jsem stejně rád, že jsem rád a klidně tuto práci podstoupím, jen když mi to zachrání napsaný kód.
7. Porovnání kódu proti schránce
Tahle fíčurka už nesouvisí s VCS jako takovým, ale souvisí s prací se změnami v kódě, tak jsem ji taky zařadil. IntelliJ Idea má naprosto skvělý DIFF editor, který se samozřejmě používá při práci s VCS, ale můžete ho použít velmi efektivně i samostatně. Zkuste třeba označit dva soubory v Project browseru a v popup menu vybrat položku:
Nebo si text hoďte do schránky, vyberte kus textu v jiném souboru a vyberte:
Tohle je věc, kterou jsem také objevil teprve nedávno a strašně rád ji používám.
Jak jsem už v úvodu řekl, je plno věcí, které neznám a jsem strašně překvapený, když se je po letech dozvím. Zkuste mě překvapit třeba v komentářích










Docela uzitecny mi prijde shortcut Ctrl+Alt+Shift+N – slouzi k vyhledavani symbolu v kodu (jmena promennych, spring bean a kdovi ceho vseho)
misto pouzivani svn bar jsem si nadefinoval quick list a asocioval ho s klavesovou zkratkou, ktera mi zobrazi seznam s VCS akcemi, potom uz jenom napisu cast nazvu akce, kterou chci udelat, takze dam Ctrl+Alt+Shift+P, potom napisu „late“ a v tom seznamu se mi vyfiltruje Compare with latest version, … stejny zpusob pouzivam napr. refactor akci, prijde mi to pohodlnejsi nez klikat mysi
Ad 4: change listy jsou užitečné, ale už jsem se párkrát nechal nachytat, když jsem v souvislosti s aktuálním úkolem změnil soubor, který už byl z dřívějška kvůli jiné změně v jiném change listu. Odhaduju, že při použití Gitu by to mohlo být inteligentnější, ale CSV a SVN holt verzují celé soubory a ne jednotlivé změny. Shelf se v tomhle kontextu tuším česky říká přihrádka
Ad 5: historie je naprosto _klíčová_, ale pro první pohled používám Annotate (klik pravým na gutter – ten panel vlevo zmiňovaný v bodu 1), občas postačí.
Ad 7: tak Compare Two Files jsem znal, ale Compare with Clipboard nikoliv, díky!!!
@Ladislav Thon:
S changelisty máš pravdu – taky jsem přišel na to, že je to v podstatě jen per file. Na dost usecasů mě to zatím stačilo. Pokud by se to chovalo jako shelve, bylo by to zajímavé, ale trošku bych se obával toho, aby si člověk ještě udržel nad změnami přehled. V takovém případě se člověk nevyhnutelně musí dostat ke konfliktům.
-> k tym changelistom, ja si vacsinou na kazde issue vytvaram zvlast changelist, existuje take nastavenie tu:
Settings/VersionControl/IssueNavigation
-> kde sa da nastavit pattern web stranky issue trackeru (pre jiru je na to button)
-> potom ked do mena changelistu napisem kod issue, tak sa mi z neho automaticky vyrobi link do trackeru
je to sikovne odporucam vyskusat…
@antaran – aha, tak to jsem pro změnu zase nevěděl já … vyzkouším, díky
To s tou lokální historií omezenou na jednotlivé soubory není tak docela pravda – lze pracovat i na úrovni adresářů.
Mezi další užitečné věci v idee bych uvedl:
- Ctrl+Shift+V = paste s výběrem několika posledních obsahů schránky
- Alt+Q = ukáže hlavičku aktuální metody nebo třídy, v jejímž těle se právě nacházím (a která je typicky oscrollována někam pryč)
@podlesh
S tou lokální historií máš pravdu – na úrovni adresářů jsem si myslel, že to funguje pouze pro to jak získat již odstraněné soubory, ale ono to správně zobrazuje i stav souborů v čase, což je super.
Díky za další tipy – Ctrl+Shift+V je základ, ten snad zná každý
– tuhle věc jsem si tak oblíbil, že jsem ji potřeboval i ve Windows samotných tak jsem si doinstaloval CLCL ( http://www.nakka.com/soft/clcl/index_eng.html ).
Alt-Q je zajímavé – zkusím začít používat.
Ahoj Honzo, díky. Líbí se mi ten shelving, dost často už jsem ho potřeboval a nevěděl jsem, co mi vlastně chybí
. Taky často používám ten Annotate. Ctrl+Shift+V nepoužívám, místo toho používám ClipDiary (obdoba CLCL) jak pro windows, tak pro Ideu, takže mám jistotu, že když něco zkopíruju odjinud, bude to tam taky.
@antaran
Díky, to issue navigation funguje pěkně a hodí se mi. Jen jsem musel trochu upravit JIRA pattern z [A-Z]+\-\d+ na [A-Z0-9]+\-\d+, protože klíče máme např. O2DU-1234.
Praktická je taky zkratka CTRL+SHIFT+I – udělá náhled metody, nad kterou zrovna jste. Nemusíte tedy skočit dovnitř přes CTRL+B a pak zase zpátky.
Další vychytávka je Ctrl+Shift+A – vyhledává akci v menu – doporučuji vyzkoušet.
Hrátky z shelf jsem ještě nezkoušel, ale vypadá to jako super feature.
@Jety
ano, to sa pomerne casto stava, ale da sa to tam zmenit lahko aj vyskusat…
inak, niekedy strasne davno asi viac nez rok, dva dozadu, bola v IDEI taka moznost pozriet si statistiky pouzitych klavesovych skratiek…teraz to nemozem nikde najst
poznate to niekto?
ak ste nejaku instalaciu IDEI pouzivali dlhsi cas, len ju stale updatovali, tak tam boli take zaujimave informacie, napr. stlacenie Ctrl + Space 100 000 krat a tak…
@antaran jeto tam stále: statistiky vyvoláš klávesovou zkratkou Alt + H + P nebo přes Menu -> Help -> Productivity Guide
Já mám třeba:
Basic code completion 162 369 krát
Syntax aware selection 86 471 krát
Zajímavé počteníčko
Tímto děkuji Václavovi Pechovi za zodpovězení, sám jsem nevěděl.
@Otec Fura
vdaka
, v poslednej dobe som sa rozhodol zacat viac pouzivat live templates tak si chcem odsledovat ako mi to ide…
ja som bohuzial nechal svoje skoro 3 rocne statistiky v minulej praci…ale tiez som tam mal vysoke cisla…mno jo keby som dostal jedno euro za kazdy „Basic code completion“ mohol by som ist do dochodku