sublime text 2插件,用于输入具有特定格式的自动许可注释行

时间:2013-03-29 19:01:16

标签: autocomplete sublimetext2 text-editor code-snippets tab-completion

我正在尝试在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:current_file_name.extension}

自动粘贴正在编辑的当前文件的名称。

$ {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}

当年

非常感谢任何建议或帮助。

1 个答案:

答案 0 :(得分:3)

使用代码片段可能无法实现,但是我写了一个插件来完成你想要的东西。在Sublime中,单击工具>新插件。用以下内容替换示例代码。将其命名为“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”替换为您的公司名称。我不确定获取当前用户名的最佳方法,我使用了这个问题:Is there a portable way to get the current username in Python?。他们说它与主要操作系统兼容。如果不做与我如何做公司名称相似的事情。并按用户手动设置。另外,我不知道UTC 24小时格式是什么。但我只是以24小时格式使用时间。

修改

我将now()更改为utcnow()以获取utc日期/时间。我添加了日期/时间格式。我将zfill(4)添加到随机数中,如果小于4位,则用零填充它。您可以突出显示当前戳记并点击键绑定以更新它。您也可以在保存时获得花哨并自动替换,但超出当前范围。您必须使用正则表达式来查找当前戳记。然后在保存而不是运行时激活脚本。