IntelliJ & Android Studio shortcuts

IntelliJ IDEA è l’IDE sviluppato da JetBrains che sta diventando sempre più diffuso negli ultimi anni. La prima versione è del 2001 e storicamente è sempre stato un prodotto a pagamento. Soprattutto per questo motivo, ha avuto una nomea di prodotto di nicchia: non troppi utilizzatori ma molto contenti di pagare la licenza vista l’alta qualità del prodotto.
Da un po’ di tempo la diffusione è aumentata grazie alla community edition (free anche se con alcune limitazione) e al fatto che Android Studio (IDE ufficiale per sviluppare su Android) è basato su questa piattaforma.
Nell’ormai lontano 2011 ho scritto su questo blog un post sulle shortcut di Eclipse, da ormai due anni sono passato ad Android Studio ed è quindi giunto il momento per un post su questo IDE!

I video degli esperti: Hadi Hariri e i Googlers

Molti utenti utilizzano IntelliJ da anni e si trova molto materiale in giro che spiega come utilizzare al meglio questo IDE. Per esempio Hadi Hariri, developer di JetBrains che si occupa fra le altre cose anche dello sviluppo di Kotlin, tiene spesso talk su questo argomento. Il primo video consigliato è IntelliJ IDEA Tips and Tricks e contiene molti consigli su come utilizzare al meglio IntelliJ:

IntelliJ IDEA Tips and Tricks from JavaZone on Vimeo.

Un altro video, sempre di un talk di Hadi Hariri, si intitola Mouseless Driven Development e ha come argomento principale il non utilizzo del mouse:

03 Mouseless Driven Development by Hadi Hariri from Official ZeroTurnaround Account on Vimeo.

A fine Novembre si è tenuto a Mountain View il primo Android Dev Summit, conferenza organizzata direttamente da Google dedicata a vari argomenti collegati al mondo Android. Uno dei talk più interessanti e che ha avuto più successo è stato Android Studio for Experts, molti consigli direttamente da chi ha creato questo IDE:

Nel blog di Philippe Breault c’è una raccolta di tutti i tips che ha pubblicato nel tempo su Google Plus. Alcuni sono quelli classici che si trovano in giro ma ci sono diverse cose molto interessanti.

Usare il mouse? No grazie!

Per essere produttivi usando un IDE il miglior consiglio è quello di usare più possibile la tastiera. IntelliJ è stato pensato per rendere possibile questo, esistono shortcut e comandi da tastiera per fare tutto. Ricapitolando velocemente le principali shortcut per evitare di usare il mouse sono le seguenti:

  • azioni: se non vi ricordate la shortcut di una azione esiste la ricerca delle azioni raggiungibile su Mac con Cmd+Shift+A;
  • apertura di un file: ci sono vari shortcut disponibili, premendo due volte Shift si esegue una ricerca globale, con Cmd+O la ricerca avviene solo fra le classi e con Cmd+Shift+O su tutti i file. Per accedere ai file recenti è possibile usare Cmd+E o Ctrl+Tab;
  • per navigare fra l’editor principale e le altre view disponibili i tasti da usare sono Esc e F12: con il primo il focus passa sull’editor mentre con il secondo si torna sull’ultima view usata.

Ricordarsi tutte le shortcut non è semplice soprattutto all’inizio, un plugin che può essere utile è Key Promoter; ogni volta che si usa il mouse per una azione questo plugin mostra la corrispondente shortcut. Un’altra risorsa molto utile è la Reference card, è disponibile il pdf della versione Windows/Linux e di quella per MacOS).
Una cosa che ho notato è che molto spesso usavo il mouse per premere il tasto destro e poi selezionare una certa azione. Il menù contestuale è infatti molto comodo, non tutte le azioni hanno una shortcut associato e spesso usare il tasto destro è il modo più semplice per vedere le azioni che hanno senso in un determinato contesto. A un certo punto mi sono chiesto, ma non esiste una shortcut per premere il tasto destro? La risposta è no! Ma è comunque semplice crearla, basta andare nelle preferenze, dentro keymap e associare una shortcut all’azione Show context menu. La cosa più complicata è probabilmente trovare una combinazione di tasti non associata ad altre azioni, io ho scelto Ctrl+backspace.

Navigazione nelle finestre di dialogo

A questo punto è difficile aggiungere qualcosa che non sia già compreso nei link all’inizio di questo post! Ci provo comunque cercando di spiegare una delle ultime cose che ho scoperto utilizzando Android Studio.
Supponiamo di voler eliminare una immagine usata in una app Android, di solito l’immagine è disponibile per più risoluzioni e quindi Android Studio mostra una finestra di dialogo per chiedere se eliminare solo il file selezionato o tutte le versioni disponibili:

Dialog conferma eliminazione

I due button in basso possono essere cliccati usando delle shortcut da tastiera:

  • il button Yes è di un colore diverso, è quello di default e per questo è possibile premerlo usando invio;
  • il button No ha il focus (e non è un caso!), per premerlo possiamo usare spazio.

Oltre ai due button è possibile chiudere il dialog senza eseguire nessuna cancellazione premendo esc. Queste shortcut sono disponibili ovunque, tutti i dialog possono essere chiusi usando esc, premere spazio equivale a cliccare sul button con il focus e premere invio permette di cliccare sul button di default.

Vediamo un altro esempio, la finestra che permette di eseguire un commit su Git:

Commit dialog

Ok, devo ammettere di non essere un vero sviluppatore, non uso Git da linea di comando ma utilizzo il supporto dentro IntelliJ. Non mi vergogno di dirlo e anzi ci tengo a sottolineare che il supporto a Git dentro IntelliJ è a dir poco favoloso! 🙂
Ma torniamo al dialog di commit, al momento dell’apertura di questo dialog il cursore è già dentro il campo di testo per inserire il messaggio. Il button di default è giustamente quello di commit, essendo dentro un campo di testo multilinea premendo invio si inserisce una nuova riga. In questo caso per premere il button di default basterà utilizzare Ctrl+Invio.
Questo dialog contiene molti componenti su cui è possibile cliccare, per esempio tutti i checkbox sulla destra. Premendo Ctrl+Tab il focus si sposta sui vari componenti della pagina, osservando con attenzione si nota che in realtà in questo modo il focus non si sposta su tutti i componenti. Infatti non è possibile selezionare alcuni checkbox usando Ctrl+Tab, osservando meglio si vede che le label dei checkbox non selezionabili contengono una lettera sottolineata. Ovviamente anche questo non è un caso, per cambiare quei checkbox è possibile usare Alt più la lettera selezionata (per esempio con Alt+O è possibile selezionare o deselezionare Optimize imports). Da notare che in alcuni versioni di MacOS se il focus è dentro un campo di testo usando Alt insieme a una lettera verrà scritto un carattere unicode nel campo di testo, in questi casi dovremo usare Ctrl+Alt più la lettera sottolineata.
Tenendo premuto Alt vedremo comparire degli underscore anche nelle label e nei button in cui inizialmente non c’erano, anche in questo caso le lettere corrispondenti possono essere usate insieme ad Alt. Per esempio nel dialog di commit è possibile accedere premendo Alt+i al menu contestuale del button commit (utile per selezionare Commit and Push).

Productivity guide

Nel menu Help c’è il comando per accedere alla Productivity guide, questa non è un semplice guida all’utilizzo dell’IDE ma contiene la storia di come lo abbiamo utilizzato. Ordinando per la terza colonna è possibile vedere le funzionalità più usate, nel mio caso vince l’auto complete seguito a poca distanza dalla selezione contestuale (su Mac si attiva usando Alt+freccia su ed è utilissima!):

Productivity guide

Conclusioni

Usare un IDE nel miglior modo possibile sembra facile ma nella realtà non è proprio banale, anche dopo anni di utilizzo c’è sempre qualcosa da imparare! Da questo post avete imparato qualcosa? Fatecelo sapere nei commenti! 🙂

Fabio Collini

Software Architect con esperienza su piattaforma J2EE e attualmente focalizzato principalmente in progetti di sviluppo di applicazioni Android. Attualmente sono nel team Android di Cynny, ci stiamo occupando dello sviluppo dell'app Morphcast. Coautore della seconda edizione di Android Programmazione Avanzata e docente di corsi di sviluppo su piattaforma Android. Follow me on Twitter - LinkedIn profile - Google+

  • Atos

    ma per schiacciare il tasto destro non basta il tasto menu? https://it.wikipedia.org/wiki/Tasto_Menu

    • Fabio Collini

      Con la tastiera “Windows” si, io sto usando un Mac e non ho trovato un tasto equivalente a quello. Poi ci sta che ci sia e non l’abbia trovato io! 🙂

  • Giampaolo Trapasso

    Bel post!
    Io trovo utile: ⌘+W per selezionare una parola, ma ripetuto seleziona l’istruzione, il metodo e la classe (che equivale al doppio clic), ⌘+B per andare alla definizione di una variabile o di un metodo e ⌘ + D per duplicare una riga. Ne ho altri in testa, ma non ci stanno tutti qui 😉

    • Fabio Collini

      Rilancio con ⌘+Alt+B che è ancora più utile di ⌘+B perché nel caso di un metodo di una interfaccia va direttamente all’implementazione del metodo!