我正在尝试添加一种不同的方法来完成多行输入。应该很简单,但我得到了一个意想不到的结果:添加新绑定后,历史记录并建议功能停止工作。
我尝试使用load_basic_bindings但没有帮助。
如果我再次评论键绑定、建议和历史工作。
from prompt_toolkit import PromptSession
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.key_binding import KeyBindings
session = PromptSession()
# load empty binds
bindings = KeyBindings()
# reading from the basic binds did not work either
# bindings = load_basic_bindings()
# HERE IS THE PROBLEM
# After adding this the history and suggest stop working
# should just add a new way to exit
# I have tested with the eager True and False, with no changes
@bindings.add('#')
def _(event):
event.app.exit(result=event.app.current_buffer.text)
while True:
text = session.prompt(
'> ',
auto_suggest=AutoSuggestFromHistory(),
key_bindings=bindings, # if I comment the key bindings, the history and search work againg
multiline=True, # this bug just happens on multiline, if put this False the bug does not happens
enable_history_search=True
)
print('You said: %s' % text)
如果我使用load_basic_bindings()
,我可以接受使用Alt+Enter
的命令,并将其添加到历史记录中。#
我不得不添加将命令添加到历史记录的功能
session.history.append_string(event.app.current_buffer.text)
使用箭头,我可以从历史记录中选择。它显示了历史的暗示。
在Linux Mint 19.2(基于Ubuntu 18.04(,Python 3.7.6,Prompt Toolkit 3.0.2上进行测试
from prompt_toolkit import PromptSession
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit.key_binding.bindings.basic import load_basic_bindings
session = PromptSession()
# load empty binds
#bindings = KeyBindings()
# reading from the basic binds did not work either
bindings = load_basic_bindings()
# HERE IS THE PROBLEM
# After adding this the history and suggest stop working
# should just add a new way to exit
# I have tested with the eager True and False, with no changes
@bindings.add('#')
def _(event):
session.history.append_string(event.app.current_buffer.text)
event.app.exit(result=event.app.current_buffer.text)
while True:
text = session.prompt(
'> ',
auto_suggest=AutoSuggestFromHistory(),
key_bindings=bindings, # if I comment the key bindings, the history and search work againg
multiline=True, # this bug just happens on multiline, if put this False the bug does not happens
enable_history_search=True
)
print('You said: %s' % text)