gpt4 book ai didi

python - 如何使用iPython 7.x中使用的prompt_toolkit实现双引号、圆括号、方括号的自动关闭?

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:22 26 4
gpt4 key购买 nike

IPython 自版本 5 起使用 Prompt_toolkit 而不是 readline,我尝试使用它的此包的实现来启用双引号、圆括号和方括号的自动关闭。我已经得到了这段代码:

ip = get_ipython()
kb = ip.pt_app.key_bindings
@kb.add('"')
def _(event):
buffer = event.current_buffer
buffer.insert_text('"')
buffer.insert_text('"')

这不能正常工作,因为它只输入两个引号,光标位于它们后面。 buffer 对象似乎没有将光标移回的方法。不过,buffer 包含一个 document 对象,它具有在光标位置之前或之后插入文本的方法。于是修改代码:

ip = get_ipython()
kb = ip.pt_app.key_bindings
@kb.add('"')
def _(event):
buffer = event.current_buffer
doc = buffer.document
doc.insert_before('"')
doc.insert_after('"')

当在键盘上按下“”时,不会产生任何输出。我从prompt_toolkit文档中得知,该文档现在应该呈现到屏幕上,但我不知道如何完成此操作。所有帮助赞赏!

最佳答案

我已经找到了当前问题的解决方案 - 我的代码缺少一个参数:

def _(event):
buffer = event.current_buffer
buffer.insert_text('"')
buffer.insert_text('"', move_cursor=False)

有关 document 对象呈现的更完整答案仍然值得赞赏,因为其他相关操作(例如删除匹配的引号)将需要这。

关于python - 如何使用iPython 7.x中使用的prompt_toolkit实现双引号、圆括号、方括号的自动关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57011659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com