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