像记事本一样按F5插入日期时间

时间:2017-10-13 07:23:11

标签: python sublimetext3

我在Preferences - Browse Packages - User(folder)

中创建了这个whatever.py文件
import sublime, sublime_plugin, time
class InsertDatetimeCommand(sublime_plugin.TextCommand):
def run(self, edit):
    sel = self.view.sel();
    for s in sel:
        self.view.replace(edit, s, time.strftime( '%H:%M %d/%m/%Y' ))

然后

in preferences - keybindings - User,添加以下行:

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

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

1 个答案:

答案 0 :(得分:1)

我建议使用view.insert在选择的第二端添加字符串:

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的问题在于您要用Selection替换区域。因此,在运行命令后,选择时间字符串,以便在您点击Enter时将其替换。您可以执行sel.clear()之类的操作或修改每个区域以进行修复。

<强>更新
正如OdatNurd所说,在这种情况下使用s.a会很困惑。使用s.b会更加一致。