【问题标题】:code for getting nearest to cursor word最接近光标词的代码
【发布时间】:2013-11-02 05:44:34
【问题描述】:

我为sublme text 3 开发插件。我需要最接近光标字的代码。

例如,如果我将光标放在图像上...

...这个插件应该返回单词run

....或至少编号10,对应于4行中字符u的位置:

然后我将能够从数字10 和行文本4 中获取单词run

但现在我只能得到 linetext 光标所在的位置:

import sublime, sublime_plugin

class line_nearest_to_cursor_wordCommand(sublime_plugin.WindowCommand):
    def run(self):            
        print('line_nearest_to_cursor_word called')
        view = self.window.active_view()
        region1 = view.sel()[0]
        line = view.line(region1)
        linetext = view.substr(line)
        print(linetext)

当我打印 region1 时,它给出了两个数字,但它们很奇怪:

    print (region1) # prints (113, 113), but 113 is not position of char "u" in line "    def run(self):"

所以问题归结为写法getXcoordPositionOnLine...

    xCoord = getXcoordPositionOnLine(region1) 
    print xCoord

... 这会给我光标在行上的 x 位置。

或者也许有更好的解决方案。

【问题讨论】:

    标签: python plugins sublimetext2 sublimetext sublimetext3


    【解决方案1】:

    我昨天为你回答了a similar question。查看文档,如果您只是将昨天答案中的line 替换为word,我相信您会得到您想要的。

    view = self.window.active_view()
    word = view.word(view.sel()[0])
    wordtext = view.substr(word)
    

    正如@skuroda 建议的那样,通过查看文档很容易回答这个问题。这并不难理解。

    【讨论】:

      【解决方案2】:

      虽然我认为格式有待改进,但请尝试查看 API 文档。通过浏览文档可能会回答您的大量问题。这些可用于 ST3 的here。话虽如此,请查看文档中的view#word(point)view#word(region)

      【讨论】:

        【解决方案3】:

        这就是我认为region1(113, 113) 的意思,你可以如何将它与 API 一起使用来获得你想要的东西,或者至少为你提供足够的信息来编写类似 @ 的东西987654325@自己操作。

        API documentation 表示sublime.Region 有两个属性ab,分别代表该区域的第一和第二。我相信这些只是文本缓冲区开头的两个整数偏移量,在这种情况下它们相同的原因是因为该区域是空的(即实际上没有字符被它选择,因为它们是相同的值,这意味着它实际上是光标的位置)。

        为了说明下面是您问题中显示的代码 sn-p 在另一个编辑器中的屏幕截图,在该编辑器中,我选择了从开头到“r”和“u”之间的所有文本“跑”字。此编辑器在右下角附近有一个指示器,显示当前选择的字节/行总数。请注意,这显示的是 113/4——这意味着“r”是文本缓冲区中的第 113th 个字符,它位于第 4th 行,因为有 3 个换行符前面的字符。

        sublime.Regions 也有一个 xpos 属性,听起来它代表字符与最后一个换行符的偏移量(我猜在这种情况下应该是 10)。进一步阅读文档让我怀疑您可能能够得到最接近 region1 表示的光标的单词是从 view.substr(view.word(region1) 返回的值。

        【讨论】:

        • 感谢您的澄清
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        • 2019-12-31
        相关资源
        最近更新 更多