1

Sublime Text 2 で次のように展開されるスニペットを設定しようとしています。

/**
* @version   $Id: ${1:current_file_name.extension} ${2:random_4_digit_number} ${3:YYYY-MM-DD} ${4:time_in_UTC_24} ${5:current_logged-in_user} $
* @author    Company http://example.com
* @copyright Copyright (C) 2007 - ${6:current_year} Company
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/

上記のスニペットには、カーソル ストップがあります。すべてのデータを自動化できれば、カーソル停止は必要ありません。

ストップマップは次のとおりです。

${1:現在のファイル名.拡張子}

現在編集中のファイルの名前を自動的に貼り付けます。

${2:random_4_digit_number}

0000 から 9999 までのランダムに生成された数字

${3:YYYY-MM-DD}

-セパレーターを使用した現在の日付。

${4:time_in_UTC_24}

:区切り文字を使用した秒を含む UTC 24 時間形式の現在時刻。

${5:current_logged-in_user}

現在ログインしているユーザー

${6:current_year}

現在の年

アドバイスや助けをいただければ幸いです。

4

1 に答える 1

3

スニペットではおそらく不可能ですが、あなたが望むことを達成するためのプラグインを書きました. Sublime で、Tools > New Pluginをクリックします。サンプル コードを次のコードに置き換えます。「add_license_stamp.py」という名前を付けて、Packagesフォルダー ( Packages/Userではなく) に保存します。また、キーマップ ファイルにキーバインディングを追加します。コマンドを実行するには、目的の場所にカーソルを置き、キーバインドを押します。

キーバインド:

{ "keys": ["ctrl+shift+9"], "command": "add_license_stamp" }

プラグイン:

import sublime, sublime_plugin
import os
import datetime
import random
import getpass

''' Add license stamp
/**
* @version   $Id: ${1:current_file_name.extension} ${2:random_4_digit_number} ${3:YYYY-MM-DD} ${4:time_in_UTC_24} ${5:current_logged-in_user} $
* @author    Company http://example.com
* @copyright Copyright (C) 2007 - ${6:current_year} Company
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/
'''


class AddLicenseStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        company_name = "BobCo"
        company_site = "http://bobco.com"

        file_path = self.view.file_name()
        file_name = os.path.basename(file_path)
        year = datetime.datetime.utcnow().strftime("%Y")
        date_time = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC")
        random_number = str(random.randrange(0000, 9999)).zfill(4)
        user = getpass.getuser()

        license = "/**\n"
        license += "* @version   $Id: " + file_name + " " + random_number + " " + date_time + " " + user + " $\n"
        license += "* @author    " + company_name + " " + company_site + "\n"
        license += "* @copyright Copyright (C) 2007 - " + year + " " + company_name + "\n"
        license += "* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only\n"
        license += "*/\n"

        self.view.replace(edit, self.view.sel()[0], license)

(注: python では、コードの後に​​空白行が必要です)

「BobCo」を会社名に置き換えます。現在のユーザー名を取得する最善の方法がわからないので、次の質問を使用しました: Python で現在のユーザー名を取得する移植可能な方法はありますか? . 彼らは、主要なOSと互換性があると言います。そうでない場合は、私が会社名を付けたのと同じようなことをしてください。そして、ユーザーごとに手動で設定します。また、UTC 24 時間形式が何なのかわかりません。しかし、私は24時間形式で時間を使用しました。

編集

utc の日付/時刻を取得するために、now() を utcnow() に変更しました。日付/時刻の書式を追加しました。乱数に zfill(4) を追加して、4 桁未満の場合はゼロで埋めました。現在のスタンプを強調表示し、キー バインドを押して更新できます。保存時に自動的に置き換えることもできますが、現在の範囲を超えています。現在のスタンプを見つけるには、正規表現を使用する必要があります。次に、実行する代わりに保存時にスクリプトをアクティブにします。

于 2013-03-29T21:37:26.090 に答える