Ipython: 将选项卡上的自动完成更改为 ctrl-space

创建于 2017-04-11  ·  4评论  ·  资料来源: ipython/ipython

你好,

我想将自动完成的键绑定更改为 ctrl-space。 我在这里读过它: http ://ipython.readthedocs.io/en/latest/config/details.html#keyboard -shortcuts。 但我不确定我会怎么做。

最有用的评论

基本上,您只需将此代码添加到您的配置文件中的任何启动文件中:

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 块可能会更好。

所有4条评论

基本上,您只需将此代码添加到您的配置文件中的任何启动文件中:

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

    ]
}
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jakirkham picture jakirkham  ·  4评论

frenzymadness picture frenzymadness  ·  3评论

okomarov picture okomarov  ·  3评论

sataliulan picture sataliulan  ·  4评论

peter-ch picture peter-ch  ·  4评论