Atajos de teclado en
IPython Shell
Si pasa algún tiempo en la computadora, probablemente haya encontrado un uso para los atajos de teclado en su flujo de trabajo. Quizás los más familiares sean Cmd-C y Cmd-V (o Ctrl-C y Ctrl-V) para copiar y pegar en una amplia variedad de programas y sistemas. Los usuarios avanzados tienden a ir aún más lejos: los editores de texto populares como Emacs, Vim y otros brindan a los usuarios una increíble variedad de operaciones a través de intrincadas combinaciones de pulsaciones de teclas.
El shell de IPython no llega tan lejos, pero proporciona una serie de atajos de teclado para una navegación rápida mientras se escriben comandos. Estos accesos directos no los proporciona IPython en sí, sino a través de su dependencia de la biblioteca GNU Readline: como tal, algunos de los siguientes accesos directos pueden diferir dependiendo de la configuración de su sistema. Además, aunque algunos de estos atajos funcionan en el cuaderno basado en navegador, esta sección trata principalmente sobre atajos en el shell de IPython.
Una vez que se acostumbre a ellos, pueden ser muy útiles para ejecutar rápidamente ciertos comandos sin mover las manos de la posición de "inicio" del teclado. Si es un usuario de Emacs o si tiene experiencia con shells de estilo Linux, lo siguiente le resultará muy familiar. Agruparemos estos atajos en algunas categorías: atajos de navegación, atajos de entrada de texto, atajos del historial de comandos y atajos varios.
Atajos de navegación¶
Si bien el uso de las teclas de flecha izquierda y derecha para moverse hacia atrás y hacia adelante en la línea es bastante obvio, existen otras opciones que no requieren mover las manos desde la posición de "inicio" del teclado:
Pulsación de tecla | Acción |
---|---|
Ctrl-a |
Mover el cursor al principio de la línea |
Ctrl-e |
Mover el cursor al final de la línea |
Ctrl-b or the left arrow key |
Mover el cursor un carácter hacia atrás |
Ctrl-f or the right arrow key |
Mover el cursor un carácter hacia adelante |
Atajos de entrada de texto¶
Si bien todos están familiarizados con el uso de la tecla Retroceso para eliminar el carácter anterior, alcanzar la tecla a menudo requiere un poco de gimnasia con los dedos, y solo elimina un solo carácter a la vez. En IPython hay varios atajos para eliminar parte del texto que estás escribiendo. Los más útiles de estos son los comandos para eliminar líneas enteras de texto. ¡Sabrá que estos se han convertido en algo natural si se encuentra usando una combinación de Ctrl-b y Ctrl-d en lugar de buscar Retroceso para eliminar el carácter anterior!
Pulsación de tecla | Acción |
---|---|
Tecla de retroceso | Eliminar el carácter anterior en la línea |
Ctrl-d |
Eliminar el siguiente carácter de la línea |
Ctrl-k |
Cortar texto desde el cursor hasta el final de la línea |
Ctrl-u |
Cortar texto desde el principio de la línea hasta el cursor |
Ctrl-y |
Retirar (es decir, pegar) texto que se cortó previamente |
Ctrl-t |
Transponer (es decir, cambiar) los dos caracteres anteriores |
Atajos del historial de comandos¶
Quizás los atajos más impactantes discutidos aquí son los que proporciona IPython para navegar por el historial de comandos. Este historial de comandos va más allá de su sesión actual de IPython: todo su historial de comandos se almacena en una base de datos SQLite en su directorio de perfil de IPython. La forma más sencilla de acceder a estos es con las teclas de flecha hacia arriba y hacia abajo para recorrer el historial, pero también existen otras opciones:
Pulsación de tecla | Acción |
---|---|
Ctrl-p (o la tecla de flecha hacia arriba) |
Acceder al comando anterior en el historial |
Ctrl-n (o la tecla de flecha hacia abajo) |
Acceder al siguiente comando del historial |
Ctrl-r |
Búsqueda inversa a través del historial de comandos |
La búsqueda inversa puede resultar especialmente útil. Recuerde que en la sección anterior definimos una función llamada cuadrado
. Hagamos una búsqueda inversa en nuestro historial de Python desde un nuevo shell de IPython y encontremos esta definición nuevamente. Cuando presiona Ctrl-r en la terminal de IPython, verá el siguiente mensaje:
In [1]:
(reverse-i-search)`':
Si comienza a escribir caracteres en este indicador, IPython completará automáticamente el comando más reciente, si lo hay, que coincida con esos caracteres:
In [1]:
(reverse-i-search)`sqa': square??
En cualquier momento, puede agregar más caracteres para refinar la búsqueda o presionar Ctrl-r nuevamente para buscar más otro comando que coincida con la consulta. Si siguió en la sección anterior, presionar Ctrl-r dos veces más da:
In [1]:
(reverse-i-search)`sqa': def square(a):
"""Return the square of a"""
return a ** 2
Una vez que haya encontrado el comando que está buscando, presione Retorno y la búsqueda terminará. Luego podemos usar el comando recuperado y continuar con nuestra sesión:
In [1]: def square(a):
"""Return the square of a"""
return a ** 2
In [2]: square(2)
Out[2]: 4
Tenga en cuenta que Ctrl-p / Ctrl-n o las teclas de flecha arriba / abajo también se pueden usar para buscar en el historial, pero solo haciendo coincidir los caracteres al principio de la línea. Es decir, si escribe def
y luego presiona Ctrl-p, encontraría el comando más reciente (si lo hubiera) en su historial que comienza con los caracteres def
.
Accesos directos varios¶
Por último, hay algunos atajos diversos que no encajan en ninguna de las categorías anteriores, pero que, sin embargo, es útil conocerlos:
Pulsación de tecla | Acción |
---|---|
Ctrl-l |
Pantalla de terminal clara |
Ctrl-c |
Interrumpir el comando actual de Python |
Ctrl-d |
Salir de la sesión de IPython |
Ctrl-c en particular puede ser útil cuando inadvertidamente inicia un trabajo de larga duración.
Si bien algunos de los atajos discutidos aquí pueden parecer un poco tediosos al principio, rápidamente se vuelven automáticos con la práctica. Una vez que desarrolle esa memoria muscular, sospecho que incluso deseará que estén disponibles en otros contextos.