Python 如何在Sublime文本插件中的特定行上插入字符串?
我有一个插件,它在文档顶部的第1行添加了一个时间戳,但我希望它在另一行插入字符串,比如第6行。起初我以为insert方法是0索引的,但事实似乎并非如此。如何告诉Python 如何在Sublime文本插件中的特定行上插入字符串?,python,plugins,sublimetext3,Python,Plugins,Sublimetext3,我有一个插件,它在文档顶部的第1行添加了一个时间戳,但我希望它在另一行插入字符串,比如第6行。起初我以为insert方法是0索引的,但事实似乎并非如此。如何告诉insert方法在哪一行插入签名字符串 import sublime, sublime_plugin import datetime, getpass class SignatureCommand(sublime_plugin.TextCommand): def run(self, edit): signatur
insert
方法在哪一行插入签名
字符串
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提供的精彩答案,我添加了一个行数
变量以增加清晰度:)
view.insert()
将点作为其位置参数
点本质上是文档中连续的字符位置
例如,在以下文档中:
Hello
World
World
末尾的插入符号将位于点11
Hello中有5个字符
- 1
NewLine
字符在Hello
世界中的5个字符
要计算特定行和列的点,请使用:
view.text\u点(行、列)
例子:
注:
行
从0
开始,因此与SublimitText中显示的行
偏移了-1
,这就是为什么我在视图中包含行-1
。text_point()
酷!非常感谢:)这正是我想要的。我还添加了一个line_num
变量,以后可以进行调整。@mbigras:Good call,我更新了答案以反映这一点,因为它提供了更好的可用性。
Hello
World
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)