如何在python readline中获取当前光标位置
我有一个自定义的python readline completer函数,在completer函数中我调用如何在python readline中获取当前光标位置,python,readline,Python,Readline,我有一个自定义的python readline completer函数,在completer函数中我调用readline.get\u line\u buffer(),它为我提供当前文本输入,以便我能够以上下文敏感的方式完成当前单词 我现在缺少的是获取当前光标位置的可能性。例如,如果要完成可能的参数,则需要该位置来确定前面的命令 在中,我还没有找到一种确定位置的方法,那么它是如何做到的呢?我下载了,并解决了这个问题。在Python 2.7上的pyreadline(readline的Windows端
readline.get\u line\u buffer()
,它为我提供当前文本输入,以便我能够以上下文敏感的方式完成当前单词
我现在缺少的是获取当前光标位置的可能性。例如,如果要完成可能的参数,则需要该位置来确定前面的命令
在中,我还没有找到一种确定位置的方法,那么它是如何做到的呢?我下载了,并解决了这个问题。在Python 2.7上的pyreadline(readline的Windows端口)中可以执行以下操作:
from pyreadline import Readline
readline = Readline()
cursor = readline.mode.l_buffer.point
请注意,这在pyreadline(Windows)中有效,但在GNU readline中不起作用(根据下面Binabik的评论)。我下载了并解决了这个问题。在Python 2.7上的pyreadline(readline的Windows端口)中可以执行以下操作:
from pyreadline import Readline
readline = Readline()
cursor = readline.mode.l_buffer.point
请注意,这在pyreadline(Windows)中有效,但在GNU readline中不起作用(根据下面Binabik的评论)。我有同样的问题。我在Windows上使用pyreadline,在pyreadline源代码中没有看到rlmain.py中的任何简单内容。我想知道before=readline.get\u-line\u-buffer(),readline.insert\u-text(“t”),before=readline.get\u-line\u-buffer(),readline.insert\u-text(“\b”)是否有效。然后你可以区分之前和之后,看看他们第一次的不同之处。取决于退格(“\b”)是否有效。另一种方法是在tab_complete挂钩中使用文本变量。我进行了测试,只要光标位于单词末尾,前面没有空格,并且行上没有任何重复的文本:|。我有同样的问题。我在Windows上使用pyreadline,在pyreadline源代码中没有看到rlmain.py中的任何简单内容。我想知道before=readline.get\u-line\u-buffer(),readline.insert\u-text(“t”),before=readline.get\u-line\u-buffer(),readline.insert\u-text(“\b”)是否有效。然后你可以区分之前和之后,看看他们第一次的不同之处。取决于退格(“\b”)是否有效。另一种方法是在tab_complete挂钩中使用文本变量。我进行了测试,您可以在行缓冲区中获取当前位置,只要光标位于单词末尾,前面没有空格,并且行上没有任何重复的文本:|。我在GNU/Linux上使用Python 3.9,在这里我导入的是“readline”,而不是像您一样导入的“pyreadline”。“readline”模块不提供“mode”属性,因此仅复制代码会失败,出现以下异常:模块“readline”没有“mode”属性。我在GNU/Linux上,使用Python 3.9,我在其中导入“readline”,而不是像您一样导入“pyreadline”。“readline”模块不提供“mode”属性,因此仅复制代码失败,出现以下异常:模块“readline”没有“mode”属性