【问题标题】:Sublime Text Plugin - How do I get the start point of a particular line?Sublime Text Plugin - 如何获取特定行的起点?
【发布时间】:2015-03-18 01:21:39
【问题描述】:

在查看了一些 referencestutorials 之后,我正在尝试为 sublime text (3) 创建一个插件。

作为一个简单的练习,我想我会创建一个 vbscript 评论插件 - 它应该在所选文本的每一行的开头插入一个撇号。

到目前为止,我已经管理迭代选定区域并将它们分成单独的行。但是我很难找到每条线的起点。 (在我下面的代码中称为lineStart)。

我认为需要该变量来找到插入撇号的确切点。我怎么得到它?

import sublime, sublime_plugin

class AspCommentCommand(sublime_plugin.TextCommand):
    def run(self, edit):

        for selectedRegion in self.view.sel():
            selection = self.view.substr(selectedRegion)
            for line in selection.split('\n'):
                lineStart = ?????
                self.view.insert(edit, lineStart, "'")

更新

万岁。我已经设法迭代选定的行,并在每行的开头插入一个撇号,使用以下代码:

class AspAddCommentCommand(sublime_plugin.TextCommand):
    def run(self, edit):

        for selectedRegion in self.view.sel():
            selectedLines = self.view.lines(selectedRegion)
            adjustBy = 0
            for line in selectedLines:
                 insertPoint = line.begin() + adjustBy
                 self.view.insert(edit, insertPoint, "'")
                 adjustBy += 1

但是在第一行插入撇号后,我需要调整下一行的插入点以允许额外的撇号字符。

有没有更好的方法来解决这个问题?

【问题讨论】:

  • 如果您正在为 ST3 制作插件,您可能需要 this APIthis reference of missing objects 而不是问题中链接的那个。
  • 感谢您的链接。我不得不说我觉得这些文档有点难以理解......但至少现在我会看到正确的版本,这是朝着正确方向迈出的一步
  • 如果您以相反的顺序遍历行,它会起作用吗?
  • 是的,我只是想知道是否有一种更巧妙的方法可以采用,这样做似乎有点老套

标签: plugins sublimetext3 sublime-text-plugin


【解决方案1】:

在 Sublime Text 3 插件中,您可以使用来获取已知行的开头

self.view.text_point(line - 1, 0)

在文档中,他们指的是row 而不是行。 Row 表示从零开始的行号。

【讨论】:

  • 哇,这个问题把我带回了几年!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 2013-06-04
  • 1970-01-01
相关资源
最近更新 更多