用python写一个支持自动补全的命令行聊天客户端

要为你的 Python 基于 prompt_toolkit 的 shell 程序添加命令行自动补全功能,你可以使用 prompt_toolkit 的自动补全机制,它提供了多种补全器(Completer),如 WordCompleter。以下示例展示如何为你的程序添加基本的命令行自动补全:

from prompt_toolkit import PromptSession
from prompt_toolkit.completion import WordCompleter
from prompt_toolkit.key_binding.bindings.vi import load_vi_bindings

def main():
    # 定义一些命令和常用词汇进行补全
    shell_commands = ['quit', 'help', '!vim', '!ls', '!echo', '!cd']
    shell_completer = WordCompleter(shell_commands, ignore_case=True)

    # 创建一个 Vim 模式的 PromptSession,包含自动补全
    session = PromptSession(completer=shell_completer)
    vim_bindings = load_vi_bindings()
    session.key_bindings = vim_bindings

    print("聊天客户端启动。输入 'quit' 来退出。输入 '!vim' 打开 Vim 编辑器。")

    while True:
        try:
            message = session.prompt("你 (Vim模式): ", vi_mode=True)
            if message.lower() == 'quit':
                break
            elif message.startswith('!'):
                command = message[1:].strip()
                if command:  # 确保命令不为空
                    print("执行命令: " + command)
                    # 在这里可以添加命令执行逻辑
            else:
                print("发送消息: " + message)
                # 这里可以添加发送消息到后端的逻辑
        except EOFError:
            print("\n检测到 Ctrl-D,程序退出。")
            break
        except KeyboardInterrupt:
            print("\n检测到 Ctrl-C,程序安全退出。")
            break

if __name__ == "__main__":
    main()

自动补全功能详解:

  • WordCompleter:这是一个基本的补全器,可以根据提供的单词列表提供补全。在这个例子中,我们把可能的命令添加到了列表中。
  • ignore_case=True:使得补全不区分大小写。
  • PromptSession(completer=shell_completer):在创建 PromptSession 对象时传入 completer 参数,以激活自动补全功能。

这种方法为用户输入提供便利,尤其是在需要输入长命令或频繁使用的命令时。通过自动补全,用户体验更佳,命令输入更快捷、错误更少。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值