web-dev-qa-db-ja.com

崇高なスニペットの日時を追加できますか?

ファイルコメントを追加するスニペットを作成したいのですが、スニペットでDateTimeを自動的に作成したいと思います。昇華スニペットはそれを行うことができますか?

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

ツール>新しいプラグイン

これを貼り付けます:

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お好みに応じて に渡される引数をカスタマイズできます。

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

私はあなたの助けなしにはこれを行うことができなかっただろう!私は今グーグルを約1時間精査し、ついにあなたの答えに恵まれました!本当にありがとう!

12
Jeremy Iglehart

InsertDateパッケージを確認することをお勧めします: https://github.com/FichteFoll/InsertDate

Readmeには、 マクロでタイムスタンプをスニペットに挿入する の使用方法の例があります。

5

この関数を(sublimeに)単純なプラグインとメタデータファイル(.tmPreferenceファイル)で実装するだけですが、これが効率的かどうかはわかりません。方法があります、

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>

2。プラグインを作成します。プラグインが読み込まれると、.tmPreferenceファイルのシェル変数が更新されます。

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)

。tmPreferenceファイルで定義したシェル変数を使用します。

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

Sublime Text 2には SMART Snippets プラグインを使用できます。

SMARTスニペットを使用すると、Pythonを使用して、スニペットを動的に作成できるようになります

私は別の 質問 のためにいくつかの調査をしました、そして私はこのプラグインがあなたの質問を解決することができるとかなり確信しています。

https://github.com/ngocjr7/sublime-snippet-timestamp で解決しました

すべてのファイルを崇高なテキストのPackages/Userディレクトリにコピーします。

必要に応じてsublime-snippetファイルを構成します(c ++の場合はcpp_template.sublime-snippet、pythonの場合はpy_template.sublime-snippet)

これで、簡単なスニペットを作成でき、command + sを押すたびに日付が更新されます。 command + sには、ファイルを保存する機能があります。

説明

スニペットは動的変数をサポートしていないため、Default.tmPreferencesで定義されている静的変数DATEを使用し、スニペットを作成するときにこの変数を更新します。

プラグイン(コマンド)updatetmを使用して、Default.tmPreferencesのDATEを更新します。

日付と時刻を自動的に更新するか、少なくとも受動的に更新したい。そこで、keystrockesコマンド+ sのupdatetmコマンドを呼び出す関数を追加しました。これを行うには、別のプラグインであるchain.pyを使用して、キーマップで複数のコマンド(updatetmコマンドとdefaultコマンド(save)の両方)を呼び出します。KeymapはDefault(OSX).sublime-snippetファイルで定義されています。

0
JR Ngọc