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:
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.