【问题标题】:How to insert a string on a specific line in a Sublime Text Plugin?如何在 Sublime Text 插件的特定行上插入字符串?
【发布时间】:2016-08-16 21:09:46
【问题描述】:

我有以下插件,它在第 1 行的文档顶部放置时间戳,但我希望它在不同的行插入字符串,如第 6 行。起初我认为插入方法是 0索引,但似乎并非如此。我如何告诉insert 方法在哪一行插入signature 字符串?

import sublime, sublime_plugin
import datetime, getpass

class SignatureCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        signature = "[%s]\n" % (datetime.datetime.now().strftime("%A, %B %d %I:%M %p"))
        self.view.insert(edit, 0, signature)

感谢您的帮助:)

更新:感谢 Enteleform 的精彩回答,我添加了一个 line_num 变量以增加清晰度:)

import sublime, sublime_plugin
import datetime, getpass

class SignatureOnSpecificLineCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        line_num = 6 # line number that signature will go on
        signature = "[%s]\n" % (datetime.datetime.now().strftime("%A, %B %d %I:%M %p"))
        line6_column0 = self.view.text_point(line_num - 1, 0)
        self.view.insert(edit, line6_column0, signature)

【问题讨论】:

    标签: python plugins sublimetext3


    【解决方案1】:

    view.insert() 采用 point 作为其位置参数。

    点本质上是文档中连续的字符位置。


    例如,在以下文档中:

    Hello
    World
    

    World 末尾的插入符号将位于点 11

    • Hello 中的 5 个字符
    • Hello 后面有 1 个 NewLine 字符
    • World 中的 5 个字符

    为了计算特定行和列的点,使用:

    view.text_point(row, column)


    示例:

    import sublime, sublime_plugin
    import datetime, getpass
    
    class SignatureCommand(sublime_plugin.TextCommand):
        def run(self, edit):
            signature = "[%s]\n" % (datetime.datetime.now().strftime("%A, %B %d %I:%M %p"))
            line = 6
            point = self.view.text_point(line - 1, 0)
            self.view.insert(edit, point, signature)
    

    注意:

    rows0 开始,因此与在SublimeText 中显示的lines 偏移-1,这就是我在view.text_point() 中包含line - 1 的原因

    【讨论】:

    • 酷!非常感谢 :) 这正是我想要的。我还继续添加了一个line_num 变量,以后可以调整。
    • @mbigras :好电话,我更新了答案以反映这一点,因为它提供了改进的可用性。
    猜你喜欢
    • 2014-06-02
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多