Hola,
Me gustaría cambiar el enlace de teclas para autocompletar a ctrl-space. Lo había leído aquí: http://ipython.readthedocs.io/en/latest/config/details.html#keyboard -shortcuts. Pero no estoy seguro de cómo lo haría.
Básicamente, solo necesita agregar este código a cualquier archivo de inicio en su perfil:
from prompt_toolkit.keys import Keys
from prompt_toolkit.key_binding.bindings.completion import generate_completions
ip = get_ipython()
bind_key = ip.pt_cli.application.key_bindings_registry.add_binding
bind_key(Keys.ControlSpace)(generate_completions)
Sin embargo, siempre debe verificar que está ejecutando el terminal con PTK antes de ejecutar ese código. Algo como esto debería funcionar:
def register_bindings():
from prompt_toolkit.keys import Keys
from prompt_toolkit.key_binding.bindings.completion import generate_completions
bind_key = ip.pt_cli.application.key_bindings_registry.add_binding
bind_key(Keys.ControlSpace)(generate_completions)
ip = get_ipython()
if getattr(ip, "pt_cli"): register_bindings()
del register_bindings
Nota: Puede poner la lógica de registro en un bloque if, pero el uso de una función evita que nombres como bind_key
filtren en el espacio de nombres de su sesión. Una vez que haya definido un montón de enlaces y filtros personalizados, terminará creando bastantes nombres que, de lo contrario, tendría que eliminar manualmente. Ponerlo todo en una función y luego borrar el nombre de la función es más limpio. Para el caso simple anterior, probablemente sería mejor un bloque if.
¡Funcionó! ¡Gracias por responderme tan rápido!
Cuando intento ejecutar lo anterior, obtengo AttributeError: 'TerminalInteractiveShell' object has no attribute 'pt_cli'
. ¿Es este un problema conocido?
escriba lo siguiente en sus preferencias de usuario de atajos de teclado
{
"shortcuts":[
{
"command": "completer:invoke-file",
"keys": [
"Ctrl Space"
],
"selector": ".jp-FileEditor .jp-mod-completer-enabled"
},
{
"command": "completer:invoke-file",
"keys": [
"Ctrl Space"
],
"selector": ".jp-FileEditor .jp-mod-completer-enabled"
},
{
"command": "completer:invoke-notebook",
"keys": [
"Ctrl Space"
],
"selector": ".jp-Notebook.jp-mod-editMode .jp-mod-completer-enabled"
}
]
}
Comentario más útil
Básicamente, solo necesita agregar este código a cualquier archivo de inicio en su perfil:
Sin embargo, siempre debe verificar que está ejecutando el terminal con PTK antes de ejecutar ese código. Algo como esto debería funcionar:
Nota: Puede poner la lógica de registro en un bloque if, pero el uso de una función evita que nombres como
bind_key
filtren en el espacio de nombres de su sesión. Una vez que haya definido un montón de enlaces y filtros personalizados, terminará creando bastantes nombres que, de lo contrario, tendría que eliminar manualmente. Ponerlo todo en una función y luego borrar el nombre de la función es más limpio. Para el caso simple anterior, probablemente sería mejor un bloque if.