Bonjour,
J'aimerais changer la combinaison de touches pour la saisie semi-automatique en ctrl-space. J'avais lu à ce sujet ici : http://ipython.readthedocs.io/en/latest/config/details.html#keyboard -shortcuts. Mais je ne sais pas comment je ferais.
En gros, il vous suffit d'ajouter ce code à n'importe quel fichier de démarrage de votre profil :
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)
Vous devriez vraiment toujours vérifier que vous exécutez le terminal avec PTK avant d'exécuter ce code. Quelque chose comme ça devrait fonctionner :
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
Remarque : vous pouvez mettre la logique d'enregistrement dans un bloc if, mais l'utilisation d'une fonction empêche les noms tels que bind_key
s'infiltrer dans l'espace de noms de votre session. Une fois que vous avez défini un tas de liaisons et de filtres personnalisés, vous finissez par créer un grand nombre de noms que vous devriez autrement supprimer manuellement. Tout mettre dans une fonction, puis supprimer le nom de la fonction est plus propre. Pour le cas simple ci-dessus, un bloc if serait probablement mieux.
Ça a marché! Merci d'être revenu vers moi si rapidement !
Lorsque j'essaie d'exécuter ce qui précède, j'obtiens AttributeError: 'TerminalInteractiveShell' object has no attribute 'pt_cli'
. est-ce un problème connu?
écrivez ce qui suit dans vos préférences utilisateur de raccourcis clavier
{
"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"
}
]
}
Commentaire le plus utile
En gros, il vous suffit d'ajouter ce code à n'importe quel fichier de démarrage de votre profil :
Vous devriez vraiment toujours vérifier que vous exécutez le terminal avec PTK avant d'exécuter ce code. Quelque chose comme ça devrait fonctionner :
Remarque : vous pouvez mettre la logique d'enregistrement dans un bloc if, mais l'utilisation d'une fonction empêche les noms tels que
bind_key
s'infiltrer dans l'espace de noms de votre session. Une fois que vous avez défini un tas de liaisons et de filtres personnalisés, vous finissez par créer un grand nombre de noms que vous devriez autrement supprimer manuellement. Tout mettre dans une fonction, puis supprimer le nom de la fonction est plus propre. Pour le cas simple ci-dessus, un bloc if serait probablement mieux.