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.
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"
}
]
}
Hilfreichster Kommentar
Im Grunde müssen Sie nur diesen Code zu einer beliebigen Startdatei in Ihrem Profil hinzufügen:
Sie sollten jedoch immer überprüfen, ob Sie das Terminal mit PTK ausführen, bevor Sie diesen Code ausführen. So etwas sollte funktionieren:
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.