-1

我为sublme text 3. 我需要最接近光标字的代码。

例如,如果我在图像上获得光标...

如何最接近光标词

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

....或至少与行10中字符位置相对应的数字:u4

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

但现在我只能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 位置。

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

4

3 回答 3

2

我昨天为你回答了一个类似的问题。查看文档,如果您只是将line昨天的答案替换为word,我相信您会得到您想要的。

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

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

于 2013-11-02T06:33:37.983 回答
1

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

于 2013-11-02T06:04:25.453 回答
1

这就是我认为region1存在的(113, 113)含义,您如何能够将它与 API 一起使用来获得您想要的东西,或者至少为您提供足够的信息以便能够自己编写类似getXcoordPositionOnLine()函数的东西。

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

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

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

于 2013-11-02T08:36:06.037 回答