Sublimetext2 我可以为sublime片段添加日期和时间吗?

Sublimetext2 我可以为sublime片段添加日期和时间吗?,sublimetext2,Sublimetext2,我想创建一个将添加文件注释的代码段,但我希望该代码段自动创建日期时间。一段精彩的片段能做到这一点吗 <snippet> <content><![CDATA[ /** * Author: $1 * DateTime: $2 * Description: $3 */ ]]></content> <!-- Optional: Set a tabTrigger to define how to trigger

我想创建一个将添加文件注释的代码段,但我希望该代码段自动创建日期时间。一段精彩的片段能做到这一点吗

<snippet>
    <content><![CDATA[
/**
 * Author:      $1
 * DateTime:    $2
 * Description: $3
 */

]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>/header</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>source.css,source.js,source.php</scope>
</snippet>

/标题
css、source.js、source.php
这回答了您的问题,并提供了一个接近的替代方案

总之,不可以,您当前无法从ST代码段插入datetime。

您可以将该插件用于Sublime Text 2

有了智能代码段,您现在可以使用Python动态创建 片段

我为另一个做了一些研究,我确信这个插件可以解决你的问题。

工具>新插件

粘贴以下内容:

import datetime, getpass
import sublime, sublime_plugin
class AddDateCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.date.today().strftime("%d %B %Y (%A)") } )

class AddTimeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%H:%M") } )
另存为~/Library/Application Support/Sublime Text 2/Packages/User/add_date.py

然后,在首选项>键绑定-用户中,添加:

{"keys": ["ctrl+shift+,"], "command": "add_date" },
{"keys": ["ctrl+shift+."], "command": "add_time" },

您可以自定义传递给
strftime

Nachocab的参数,这是一个很好的答案,对我帮助很大。我为自己创建了一个稍微不同的版本

~/Library/Application Support/Sublime Text 2/Packages/User/datetimestamp.py:

import datetime, getpass
import sublime, sublime_plugin

class AddDateTimeStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") } )

class AddDateStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%Y-%m-%d") } )

class AddTimeStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%H:%M:%S") } )
{"keys": ["super+alt+ctrl+d"], "command": "add_date_time_stamp" },
{"keys": ["super+alt+d"], "command": "add_date_stamp" },
{"keys": ["super+alt+t"], "command": "add_time_stamp" }
首选项>键绑定-用户:

import datetime, getpass
import sublime, sublime_plugin

class AddDateTimeStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") } )

class AddDateStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%Y-%m-%d") } )

class AddTimeStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%H:%M:%S") } )
{"keys": ["super+alt+ctrl+d"], "command": "add_date_time_stamp" },
{"keys": ["super+alt+d"], "command": "add_date_stamp" },
{"keys": ["super+alt+t"], "command": "add_time_stamp" }

没有你的帮助,我不可能做到这一点!我搜索了谷歌大约一个小时,终于被你的回答所吸引!太感谢你了

您可能需要检查InsertDate包:


在自述文件中,您可以找到一个如何使用的示例。

我只是通过一个简单的插件和元数据文件(.tmPreference文件)来实现这个功能(在sublime3),但我不知道这是否有效。有办法

1。创建一个.tmPreference文件,在代码段中放入一些要使用的变量。 例如,您可以将内容保存在Packages/User/Default.tmPreference中

<plist version="1.0">
<dict>
    <key>name</key>
    <string>Global</string>
    <key>scope</key>
    <string />
    <key>settings</key>
    <dict>
        <key>shellVariables</key>
        <array>
            <dict>
                <key>name</key>
                <string>TM_YEAR</string>
                <key>value</key>
                <string>2019</string>
            </dict>
            <dict>
                <key>name</key>
                <string>TM_DATE</string>
                <key>value</key>
                <string>2019-06-15</string>
            </dict>
            <dict>
                <key>name</key>
                <string>TM_TIME</string>
                <key>value</key>
                <string>22:51:16</string>
            </dict>
        </array>
    </dict>
</dict>
</plist>
3。使用您在.tmPreference文件中定义的shell变量。

import sublime, sublime_plugin
import time
from xml.etree import ElementTree as ET

# everytime when plugin loaded, it will update the .tmPreferences file.
def plugin_loaded():
    # res = sublime.load_resource('Packages/User/Default.tmPreferences')
    # root = ET.fromstring(res)
    meta_info = sublime.packages_path() + '\\User\\Default.tmPreferences'
    tree = ET.parse(meta_info)
    eles = tree.getroot().find('dict').find('dict').find('array').findall('dict')

    y = time.strftime("%Y", time.localtime())
    d = time.strftime("%Y-%m-%d", time.localtime())
    t = time.strftime("%H:%M:%S", time.localtime())

    for ele in eles:
        kvs = ele.getchildren()
        if kvs[1].text == 'TM_YEAR':
            if kvs[3].text != y:
                kvs[3].text = y
                continue
        elif kvs[1].text == 'TM_DATE':
            if kvs[3].text != d:
                kvs[3].text = d
                continue
        elif kvs[1].text == 'TM_TIME':
            if kvs[3].text != t:
                kvs[3].text = t
                continue

    tree.write(meta_info)
<snippet>
    <content><![CDATA[
/**
  ******************************************************************************
  * \brief      ${1:}
  * \file       $TM_FILENAME
  * \date       $TM_DATE
  * \details    
  ******************************************************************************
  */

${0:}

/****************************** Copy right $TM_YEAR *******************************/
        ]]></content>
    <!-- Optional: Tab trigger to activate the snippet -->
    <tabTrigger>cfc</tabTrigger>
    <!-- Optional: Scope the tab trigger will be active in -->
    <scope>source.c, source.c++</scope>
    <!-- Optional: Description to show in the menu -->
    <description>c file comment</description>
</snippet>

氟氯化碳
C源程序C++
c文件注释
它在

将所有文件复制到升华文本的Packages/User目录

根据需要配置高级代码段文件(C++的PPP.TEMPPLATE升华代码段和Python的pyyTimeLabor升空代码段)

现在,您可以创建一个简单的代码段,并且每次按command+s时,日期都会更新。command+s仍然具有保存文件的功能

解释

因为代码段不支持动态变量,所以我在Default.tmPreferences中使用静态变量DATE define,并在创建代码段时更新此变量

我使用一个插件(命令)updatetm来更新Default.tmPreferences中的日期


我希望日期和时间自动更新或至少被动更新。因此,我添加了一个函数,称为updatetm command,用于击键命令+s。为此,我使用另一个插件chain.py调用keymap上的多个命令(updatetm命令和默认命令(save).keymap在默认(OSX)中定义).sublime代码片段文件。

哦,netbeans可以…真遗憾。是的,我同意。您应该提交一个功能请求:是的,您可以,请参见下面的答案。谢谢为我节省了一些时间!@a您可能想更改已接受的answer@aisensiy:这真的应该是公认的答案。你需要改变它!谢谢@nachocab!注意这是一个宏and没有回答@Aisensey的问题。他们想要一个有今天日期的代码段。而不是生成没有今天日期的代码段的宏。请注意,插件文件必须直接保存在用户下,而不是子目录下,这与代码段和主题不同。任何时候@Jonny:)很高兴您喜欢它!这看起来是正确的答案,尤其是OP提出的问题。虽然它看起来像升华2而不是3是的,我正在sblime3上工作。在我得到这个解决方案之前,我试图在stackoverflow中搜索答案,并找到了这篇文章。所以我只是在这里发布我的解决方案。勘误表:代码正在查找meta_info=sublime.packages_path()+'\\User\\Default.tmPreferences',但您将该文件作为Default.tmPreferences