Python 在记事本中按F5类似键插入日期时间

Python 在记事本中按F5类似键插入日期时间,python,sublimetext3,Python,Sublimetext3,我在Preferences-Browse Packages-User(文件夹)中创建了这个whatever.py文件 然后 在preferences-keybindings-User中,添加了以下行: { "keys": ["f5"], "command": "insert_datetime"} 按F5键可以正常工作,我可以插入日期时间,但当我这样做时,这个日期时间被选中,当我按enter键转到换行符时,它被删除。您知道在按F5后,我应该在上面的代码中更改哪一部分以不选择所有日期时间字符串吗?

我在Preferences-Browse Packages-User(文件夹)中创建了这个whatever.py文件

然后

在preferences-keybindings-User中,添加了以下行:

{ "keys": ["f5"], "command": "insert_datetime"}

按F5键可以正常工作,我可以插入日期时间,但当我这样做时,这个日期时间被选中,当我按enter键转到换行符时,它被删除。您知道在按F5后,我应该在上面的代码中更改哪一部分以不选择所有日期时间字符串吗?

我建议使用
视图。插入
以在选择的第二个末尾添加字符串:

class InsertDatetimeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        sel = self.view.sel()
        for s in sel:
            self.view.insert(edit, s.b, time.strftime( '%H:%M %d/%m/%Y' ))
replace
的问题是,您正在用
选择项替换区域。因此,在运行命令后,时间字符串被选中,因此当您点击
Enter
时,它将被替换。您可以执行类似于
sel.clear()
的操作,或者修改每个区域以修复它

更新:

正如OdatNurd所说,在这种情况下,使用
s.a
将被混淆。使用
s.b
会更加一致。

尝试了这个方法,但没有成功。甚至不打印日期时间。你试过你提到的改变吗?你能粘贴全部代码吗?我已经更新了全部代码。它对我来说是有效的,如果它不起作用,你能在控制台中给出输出吗?这个答案对我来说也是有效的,我会检查控制台是否有错误。另请注意,您也可以使用只包含以下代码的
run
方法轻松完成此操作:
self.view.run\u命令(“插入”、{“字符”:time.strftime(“%H:%M%d/%M/%Y”)}
作为旁注,
a
属性为您提供选择的第一个结尾,而不是选择的开始,因此,如果您先选择文本,然后从右向左选择,则插入可能不会发生在您想要的位置。这也不会使所选文本与插入的文本发生冲突(这可能是一个大问题,也可能不是一个大问题)。谢谢,我没有注意到这种差异,并且已经更新了答案。
class InsertDatetimeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        sel = self.view.sel()
        for s in sel:
            self.view.insert(edit, s.b, time.strftime( '%H:%M %d/%m/%Y' ))