Ipython: Ändern Sie die automatische Vervollständigung auf der Registerkarte in Strg-Leertaste

Erstellt am 11. Apr. 2017  ·  4Kommentare  ·  Quelle: ipython/ipython

Hallo,

Ich möchte die Tastenbelegung für die Autovervollständigung in Strg-Leertaste ändern. Ich hatte hier darüber gelesen: http://ipython.readthedocs.io/en/latest/config/details.html#keyboard -shortcuts. Aber ich bin mir nicht sicher, wie ich es machen würde.

Hilfreichster Kommentar

Im Grunde müssen Sie nur diesen Code zu einer beliebigen Startdatei in Ihrem Profil hinzufügen:

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)

Sie sollten jedoch immer überprüfen, ob Sie das Terminal mit PTK ausführen, bevor Sie diesen Code ausführen. So etwas sollte funktionieren:

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

Hinweis: Sie könnten die Registrierungslogik in einen if-Block einfügen, aber die Verwendung einer Funktion verhindert, dass Namen wie bind_key in den Namespace Ihrer Sitzung gelangen. Sobald Sie eine Reihe von Bindungen und benutzerdefinierten Filtern definiert haben, erstellen Sie am Ende ziemlich viele Namen, die Sie sonst manuell löschen müssten. Alles in eine Funktion zu packen und dann den Namen der Funktion zu löschen, ist sauberer. Für den obigen einfachen Fall wäre ein if-Block wahrscheinlich besser.

Alle 4 Kommentare

Im Grunde müssen Sie nur diesen Code zu einer beliebigen Startdatei in Ihrem Profil hinzufügen:

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)

Sie sollten jedoch immer überprüfen, ob Sie das Terminal mit PTK ausführen, bevor Sie diesen Code ausführen. So etwas sollte funktionieren:

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

Hinweis: Sie könnten die Registrierungslogik in einen if-Block einfügen, aber die Verwendung einer Funktion verhindert, dass Namen wie bind_key in den Namespace Ihrer Sitzung gelangen. Sobald Sie eine Reihe von Bindungen und benutzerdefinierten Filtern definiert haben, erstellen Sie am Ende ziemlich viele Namen, die Sie sonst manuell löschen müssten. Alles in eine Funktion zu packen und dann den Namen der Funktion zu löschen, ist sauberer. Für den obigen einfachen Fall wäre ein if-Block wahrscheinlich besser.

Es funktionierte! Vielen Dank, dass Sie sich so schnell bei mir gemeldet haben!

Wenn ich versuche, das obige auszuführen, erhalte ich AttributeError: 'TerminalInteractiveShell' object has no attribute 'pt_cli' . Ist das ein bekanntes Problem?

Schreiben Sie Folgendes zu Ihren Benutzereinstellungen von Tastenkombinationen

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

    ]
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen