Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Sublime文本插件中的特定行上插入字符串?_Python_Plugins_Sublimetext3 - Fatal编程技术网

Python 如何在Sublime文本插件中的特定行上插入字符串?

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

我有一个插件,它在文档顶部的第1行添加了一个时间戳,但我希望它在另一行插入字符串,比如第6行。起初我以为insert方法是0索引的,但事实似乎并非如此。如何告诉
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)