我可以添加日期时间崇高片段?(Can i add date time for sublime sni

2019-07-30 21:17发布

我想创建一个片段,将增加一个文件发表评论,但我想要的片段自动创建的日期时间。 一个崇高的片段能做到吗?

<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>

Answer 1:

工具>新插件

粘贴这样的:

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") } )

保存为〜/库/ Application Support /崇高文字2 /封装/用户/ add_date.py

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

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

您可以自定义传递到参数strftime 根据自己的喜好 。



Answer 2:

Nachocab,这是一个伟大的答案 - 并帮助我非常多。 我创建了一个稍微不同的版本,为自己

〜/库/ Application Support /崇高文字2 /封装/用户/ 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" }

我不会已经能够做到这一点没有你的帮助! 我现在谷歌搜罗了大约一个小时,终于被你的答案增光! 非常感谢!



Answer 3:

您可能要检查InsertDate包: https://github.com/FichteFoll/InsertDate

在自述中,你可以找到你如何用一个例子宏来插入时间戳到片段 。



Answer 4:

您可以使用SMART片段的崇高文字2插件。

随着SMART片段,您现在可以使用Python来动态地创建片段

我做了一些研究的另一个问题 ,我敢肯定,这个插件可以解决你的问题。



Answer 5:

我只是实现由简单的插件和元数据文件(.tmPreference文件)这个函数,但我不知道这是否是有效的。 还有就是这样,

1.创建一个.tmPreference文件,把你想要的片段用一些变量。 有一个例子,你可以保存教改尝试在 /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>

2.创建一个插件,这将更新.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)

3.使用在.tmPreference文件中定义的shell变量。

<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>


Answer 6:

这个职位上的官员ST论坛回答您的问题,并提供了一个紧密的替代方案。

总之,不,你不能当前日期时间从ST片段插入。



文章来源: Can i add date time for sublime snippet?