Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python readline中获取当前光标位置_Python_Readline - Fatal编程技术网

如何在python readline中获取当前光标位置

如何在python readline中获取当前光标位置,python,readline,Python,Readline,我有一个自定义的python readline completer函数,在completer函数中我调用readline.get\u line\u buffer(),它为我提供当前文本输入,以便我能够以上下文敏感的方式完成当前单词 我现在缺少的是获取当前光标位置的可能性。例如,如果要完成可能的参数,则需要该位置来确定前面的命令 在中,我还没有找到一种确定位置的方法,那么它是如何做到的呢?我下载了,并解决了这个问题。在Python 2.7上的pyreadline(readline的Windows端

我有一个自定义的python readline completer函数,在completer函数中我调用
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”属性