最近光标字的代码

时间:2013-11-02 05:44:35

标签: python plugins sublimetext2 sublimetext sublimetext3

我开发了sublme text 3的插件。我需要用于获取最接近光标字的代码。

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

how to get nearest to cursor word

...此插件应返回单词run

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

然后,我就可以从数字run和第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光标位置。

或许有更好的解决方案。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

以下是我认为region1 (113, 113)的含义,您可以如何使用它来获取您想要的内容,或者至少为您提供足够的信息以便能够写入类似于getXcoordPositionOnLine()的功能。

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

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

screenshot of the code snippet shown another editor sublime.Region也有一个 xpos 属性,听起来它代表了字符与上一个换行符的偏移量(在这种情况下,我猜是10)。进一步阅读文档会让我怀疑你是否能够得到region1所代表的光标最近的单词是从view.substr(view.word(region1)返回的值。