【发布时间】:2020-02-01 15:33:23
【问题描述】:
我有一个自定义的 python readline 完成函数,在完成函数中我调用readline.get_line_buffer(),它为我提供当前文本输入,以便我可以以上下文相关的方式完成当前单词。
我现在缺少的是获取当前光标位置的可能性。例如,如果要完成可能的参数,则需要位置来确定前面的命令。
在the python readline module documentation,我还没有找到确定位置的方法,那是怎么做到的呢?
【问题讨论】:
-
我也有同样的问题。我在 Windows 上使用 pyreadline,在 pyreadline 源代码中的 rlmain.py 中没有看到任何简单的内容。我想知道 before = readline.get_line_buffer(), readline.insert_text("t"), after = readline.get_line_buffer(), readline.insert_text("\b") 是否可行。然后你可以前后比较,看看他们第一次不同的地方。取决于退格 ("\b") 是否有效。
-
另一个想法是在 tab_complete 钩子中使用 text 变量。我测试了,只要光标位于单词的末尾并且前面没有空格,并且行上没有任何重复的文本,您就可以在行缓冲区中获取当前位置:|。