Raúl Ávila

Sobre mí     Archivos

Atajos de teclado en IDE's

En mi anterior post hablé de IDE’s y las diferentes alternativas que hay en el mercado. Mi intención inicial con ese post era hablar de atajos de teclado, pero me extendí demasiado con la introducción y preferí terminar ese hilo para hablar de ello más adelante.

En mi opinión, ningún desarrollador profesional puede proclamarse como tal si no domina al menos una gran parte de los atajos de teclado que detallaré a continuación. El desarrollo de software debe estar centrado en producir una buena arquitectura y un código mantenible y modular. Un código con estas características no es generado a la primera, requiriendo de un proceso sucesivo de depuración y refactorización. Las herramientas ofrecidas por los IDE’s facilitan muchísimo esta labor, y me atrevería a decir que no conocerlas dificulta el proceso a seguir para llevar a cabo las acciones necesarias que nos llevarán a cumplir con el objetivo de entregar un código SOLID.

Bien es verdad que todas las acciones están disponibles mediante los menús, pero usarlas de esta forma te hace no llegar a interiorizarlas jamás. Es el uso continuado mediante los atajos de teclado (o shorcuts) lo que realmente consigue que sea totalmente natural pulsar Alt + Shift + M para extraer un método, por ejemplo.

Como ya comenté, actualmente me he pasado a IntelliJ IDEA, pero durante muchos años utilicé Eclipse. Además, nunca se sabe si tendré que volver a Eclipse en algún momento, así que personalmente, consideré mucho más fácil utilizar en IntelliJ el Keymap de Eclipse, con alguna pequeña modificación. Recientemente me he pasado a Mac en casa, y eso añade otra capa de complejidad al asunto, porque los teclados de Mac tienen la tecla Cmd, que no existe en los teclados Windows. La mayoría de las veces, los shorcuts que en Windows son Ctrl + Algo, en Mac son Cmd + Algo, pero no siempre, porque Mac sigue teniendo la tecla Ctrl. Un lío, vaya.

En las siguiente tablas detallo todos los atajos que considero son imprescindibles en el día a día. Puede que se pueda vivir sin un 10-20% de ellos, pero yo no sería capaz de programar sin utilizar la gran mayoría. Separaré las tablas por categorías, y detallaré el atajo en Windows y en Mac. Repito que este Keymap es prácticamente común para Eclipse e IntelliJ, aunque alguna accción no está implementada en Eclipse. En este último caso añadiré una nota en la columna correspondiente. Si hay varios shortcuts, los separaré por comas, y en ocasiones he modificado el shortcut por defecto o añadido uno (no siempre existe shortcut por defecto). La intención del post es dar a conocer las acciones disponibles, y ya es cuestión de cada uno personalizarlo a su medida.

Vamos a ello.

Opciones de navegación

Acción Windows OS X Notas
Navegar entre ficheros Ctrl + Tab Ctrl + Tab Eclipse: modificada sobre el default
Ir a la declaración seleccionada (Clase o método) Ctrl + Click, F3 Ctrl + Click, F3 -
Cerrar fichero abierto Ctrl + W Cmd + W -
Cerrar todos los fichero abiertos Ctrl + Shift + W Cmd + Shift + W -
Ver ficheros abiertos recientemente Ctrl + E Cmd + E -
Ver ficheros editados recientemente Ctrl + Shift + E Cmd + Shift + E -
Ir al último punto editado Ctrl + Q Ctrl + Q -
Ir al método siguiente/anterior Ctrl + Shift + Down/Up Ctrl + Alt + Down/Up -
Mostrar usos (llámadas a un método, por ejemplo) Ctrl + G Cmd + G -
Abrir definición en popup Ctrl + Shift + I Alt + Space No existe en Eclipse
Navegar en la historia del cursor Alt + Left/Right Ctrl + Alt + Left/Right -
Ir al inicio/final del fichero Ctrl + Home/End Cmd + Up/Down -
Mover cursor al final/inicio de bloque ({}) Ctrl + Shift + P Ctrl + Shift + P -

Me dejo algún atajo como Navegar adelante/atrás, a modo explorador. La verdad es que en este caso sigo utilizando las flechas de la barra de herramientas, y no pienso reflejar comandos que no utilizo para darme el pisto :). Si en algún momento los añado a mi toolbox diario lo actualizaría aquí.

Asistencia en generación de código

Acción Windows OS X Notas
Copiar Ctrl + C Cmd + C -
Cortar Ctrl + X Cmd + X -
Pegar Ctrl + V Cmd + V -
Pegar de la historia Ctrl + Shift + V Cmd + Shift + V No existe en Eclipse
Deshacer Ctrl + Z Cmd + Z -
Rehacer Ctrl + Y Cmd + Shift + Z -
Duplicar línea Ctrl + Alt + Down Cmd + Alt + Down Eclipse: no hay shortcut por defecto
Borrar línea Ctrl + D Cmd + D -
Completar statement / bloque Ctrl + Shift + Enter Cmd + Shift + Enter No existe en Eclipse
Quick Fix Ctrl + 1, Alt + Enter Cmd + 1, Cmd + Enter -
Sugerencias (autocompletado) Ctrl + Space Ctrl + Space -
Sugerencias incluyendo static Ctrl + Alt + Space Ctrl + Alt + Space -
Generar código Alt + Insert Ctrl + Enter -
Rodear con (try/catch, if, etc) Alt + Shift + Z Cmd + Shift + Z -

Las opciones reflejadas en esta tabla son, sin duda, las que mayor repercusión tienen en el incremento de la productividad. Veamos con detalle las más complejas:

  • “Pegar de la historia”, en IntelliJ, guarda un histórico del portapapeles, y permite seleccionar el fragmento a pegar de una lista. Es bastante interesante.
  • Completar statement / bloque: una de las opciones más potentes de IntelliJ de las que no existen en Eclipse. Cierra y formatea la línea o bloque en curso, añadiendo los paréntesis o llaves necesarios para balancear correctamente la instrucción, así como el punto y coma si es un statement de una sola línea.
  • Quick fix: un clásico, ofrece opciones para solucionar problemas, por ejemplo: implementar métodos ausentes (si estamos implementado una interfaz y faltan métodos), convertir un método a static si no lo es y lo estamos referenciando como tal, etc.
  • Generar código: por ejemplo, getters y setters, constructores con ciertos parametros, etc. Aunque existe en Eclipse, el popup de generación de código que aparece en IntelliJ no existe como tal:

Generate Intellij

Opciones de búsqueda

Acción Windows OS X Notas
Buscar en fichero Ctrl + F Cmd + F IntelliJ: no hay shortcut por defecto (increíblemente)
Reemplazar en fichero Ctrl + R Cmd + R IntelliJ: no hay shortcut por defecto (increíblemente)
Buscar fichero en proyecto Ctrl + Shift + R Cmd + Shift + R -
Buscar clase en proyecto (y dependencias) Ctrl + Shift + T Cmd + Shift + T -
Buscar símbolo Ctrl + Shift + S Cmd + Shift + S -
Buscar implementación (de interface, clase abstracta...) Ctrl + T Cmd + T IntelliJ: no hay shortcut por defecto
Buscar en todas partes Double Shift Double Shift -

Refactoring

Acción Windows OS X Notas
Renombrar Alt + Shift + R Alt + Shift + R -
Extraer método Alt + Shift + M Alt + Shift + M, Cmd + Alt + M -
Extraer variable Alt + Shift + L Alt + Shift + L, Cmd + Alt + L -
Extraer constante Ctrl + Alt + C Cmd + Alt + K No hay shortcut por defecto
Extraer atributo Ctrl + Alt + F Cmd + Alt + F -
Cambiar declaración del método Alt + Shift + C Cmd + Alt + C -

Formateo y organización de código

Acción Windows OS X Notas
Organizar imports Ctrl + Shift + O Cmd + Shift + O -
Mover línea/método arriba/abajo Alt + Up/Down Alt + Up/Down -
Formatear código Ctrl + Shift + F Cmd + Shift + F -

Evidentemente, la opción “Formatear código” lo hará según lo tengamos configurado en las preferencias => Code Style. En proyectos corporativos es muy importante tratar de ser consistente en el estilo de código ejecutado por los desarrolladores. Una plantilla muy buena para esto es la de Google. De este tema hablaré en un post futuro, seguramente.

Acciones genéricas

Acción Windows OS X Notas
Seleccionar todo Ctrl + A Cmd + A -
Insertar nueva línea después de la actual Shift + Enter Shift + Enter -
Comentar línea Ctrl + / Cmd + / -
Comentar bloque Ctrl + Shift + / Cmd + Shift + / -
Encontrar Acción Ctrl + Shift + A Ctrl + Shift + A No es el shortcut por defecto de IntelliJ
Ejecutar clase / tests Ctrl + Shift + F10 Ctrl + Shift + F10 (personalizado), Ctrl + Shift + R (default) Eclipse: estas no son las opciones por defecto
Debug clase / tests Ctrl + Shift + F11 Ctrl + Shift + F11 -
Seleccionar ejecución Ctrl + Shift + F8 Ctrl + Shift + F8 -
Seleccionar ejecución (debug) Ctrl + Shift + F9 Ctrl + Shift + F9 -
Extender / disminuir selección Alt + Shift + Up / Down Alt + Shift + Up / Down No es el shortcut por defecto en OS X

La última opción de la tabla existe sólo en IntelliJ, y es muy interesante. Permite, desde la posición actual del cursor, aumentar el texto seleccionado por bloques compilables. Probadla, porque seguro que la introducís en vuestro día a día.

Conclusión

Una buena forma de aprender estos atajos de teclado es introducirlos de manera progresiva en la dinámica de trabajo. No es posible dominar más de cuarenta shortcuts en un par de días, pero aprender tres o cuatro por semana es perfectamente posible, y seguramente ya conozcáis muchos de ellos. De hecho me daría por contento si gracias a este post os he dado a conocer dos o tres atajos que os resulten útiles de ahora en adelante.

Personalmente, mi intención con este artículo ha sido más la de recolectar de forma ordenada los diferentes shortcuts que utilizo para que me sirva de recordatorio si algún día tengo que configurar de cero el Keymap en una nueva instalación.