Ipython: Changer la saisie semi-automatique sur l'onglet en ctrl-espace

Créé le 11 avr. 2017  ·  4Commentaires  ·  Source: ipython/ipython

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.

Commentaire le plus utile

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.

Tous les 4 commentaires

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"
        }

    ]
}
Cette page vous a été utile?
0 / 5 - 0 notes