我开发了sublme text 3
的插件。我需要用于获取最接近光标字的代码。
例如,如果我将光标放在图像上......
...此插件应返回单词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光标位置。
或许有更好的解决方案。
答案 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
有两个属性,a
和b
,代表该区域的第一个和第二个结尾。我相信这些只是文本缓冲区开头的两个整数偏移量,在这种情况下它们是相同的原因是因为该区域是空的(即它实际上没有选择任何字符,因为它们是相同的值,这意味着它实际上是光标的位置。
为了说明下面是您在另一个编辑器中显示的代码段的屏幕截图,我在其中选择了“r”和“u”之间的所有文本。跑”。此编辑器右下角附近有一个指示器,显示当前所选的字节/行总数。请注意,这显示为113/4 - 意味着文本缓冲区中的“r”是113 th 字符,并且它位于4 th 行,因为有3个换行符在它之前的字符。
sublime.Region
也有一个 xpos 属性,听起来它代表了字符与上一个换行符的偏移量(在这种情况下,我猜是10)。进一步阅读文档会让我怀疑你是否能够得到region1
所代表的光标最近的单词是从view.substr(view.word(region1)
返回的值。