基本上,您只需将此代码添加到您的配置文件中的任何启动文件中:
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)
不过,在运行该代码之前,您确实应该始终检查是否正在使用 PTK 运行终端。 这样的事情应该工作:
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
注意:您可以将注册逻辑放在 if 块中,但使用函数可以阻止bind_key
之类的名称泄漏到会话的命名空间中。 一旦你定义了一堆绑定和自定义过滤器,你最终会创建相当多的名称,否则你必须手动删除这些名称。 将其全部放在一个函数中,然后删除该函数的名称会更清晰。 对于上面的简单情况,if 块可能会更好。
有效! 谢谢你这么快回复我!
当我尝试运行上面的代码时,我得到AttributeError: 'TerminalInteractiveShell' object has no attribute 'pt_cli'
。 这是一个已知的问题?
将以下内容写入您的用户键盘快捷键首选项
{
"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"
}
]
}
最有用的评论
基本上,您只需将此代码添加到您的配置文件中的任何启动文件中:
不过,在运行该代码之前,您确实应该始终检查是否正在使用 PTK 运行终端。 这样的事情应该工作:
注意:您可以将注册逻辑放在 if 块中,但使用函数可以阻止
bind_key
之类的名称泄漏到会话的命名空间中。 一旦你定义了一堆绑定和自定义过滤器,你最终会创建相当多的名称,否则你必须手动删除这些名称。 将其全部放在一个函数中,然后删除该函数的名称会更清晰。 对于上面的简单情况,if 块可能会更好。