ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

LiveStamps

TundraTech ST3

一个Sublime Text 3插件,用于将自更新元数据注入任何文档。

详细信息

  • 1.0.0
  • github.com
  • github.com
  • 9年前
  • 5年前
  • 9年前

安装

  • 总数 778
  • Win 558
  • Mac 149
  • Linux 71
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

自述文件

源代码
raw.githubusercontent.com

Sublime Text 3的LiveStamps

一个Sublime Text 3插件,用于将自更新元数据注入任何文档。

特性

  • 元数据 - 将自更新标签插入到注释块标题
  • 高亮显示 - 背景、轮廓和/或侧边标记。
  • 时间戳 - 钟区/夏令时感知的戳记,具有自定义格式和手动偏移量
  • 文件元数据 - 在文件移动/重命名时自动跟踪文件信息
  • 最后修改时间 - 跟踪文档最后更新的确切时间
  • 用户信息 - 共享文件可以知道谁在什么时候做了什么。
  • 校验和 - 将md5散列添加到文件(也支持sha)
  • 联系信息 - 当电子邮件地址或网址更改时,自动更新您的项目
  • 自定义戳记 - 使用强大的自定义/自动正则表达式匹配轻松创建
  • 灵活的输入 - 通过键盘、命令面板或菜单注入戳记
  • 易于配置 - 直接从UI切换大多数插件设置

高级功能

  • 菜单生成器 - 定义你想要定义的任何戳记,它们只需右键单击即可
  • 自定义菜单 - 只需定义一个菜单键来排序您的戳记
  • 超级戳记 - 在更大的戳记中使用多个值或其他戳记…非常适合签名...
  • 超越元数据 - 使用强大的Python格式执行转换
  • 内建帮助 - Python format() & srtftime()实时参考和数据导出到测试新设计
  • 灵活的正则表达式 - 每个戳记或全局“自动”正则表达式模式自定义,由您决定!

即将推出

特定语言代码片段和戳记定义!

LiveStamps的一个很好的潜在用途是能够根据您正在处理的文档轻松/自动在不同戳记定义之间切换。包含JavaScript、SASS、PHP代码片段的定义文件可以轻松通过菜单访问。已实施文档类型检测和菜单生成,主要是关于简单地编写定义文件

非常感谢在创建特定于语言的定义文件和使用代码片段方面的帮助!

安装

# Package Control:

  1. Open Sublime Text 3
  2. cmd+shift+p
  3. Package Control: Install Package
  4. Search for LiveStamps

# Manual Install:  

  1. Open Sublime Text 3
  2. Sublime Text Menu -> Preferences -> Browse Packages
  3. Create folder called LiveStamps
  4. Copy the contents of this repo to the folder.

设置用户信息

1. Right-Click -> LiveStamps -> Definitions -> Open
  2. Fill in "user_info" key accordingly
  3. You may add custom keys here if you like

  # Note, By default LiveStamps updates all stamps on save, to disable:

  Right-Click -> LiveStamps -> Preferences -> Update On Save

用法

每个LiveStamp都有一个格式化值和原始值。原始值通常用作一次性的静态注入,即频繁使用的变量。但是,当在戳定义中添加正则表达式时,匹配的模式将自动更新。例如,@modified戳会在文档保存时自我更新。

格式化和原始值可以通过以下方式获取

键盘注入

# Generic Usage:

[super] + [alt] + [letter]   # Injects a formatted value
[ctrl]  + [alt] + [letter]   # Injects a raw value

# Example: All Stamps

[super] + [alt] + a          # Injects all formatted values   
[ctrl]  + [alt] + a          # Injects all raw values

菜单注入

Right-click -> LiveStamps -> Insert Stamp -> [type]
Right-click -> LiveStamps -> Insert Value -> [type]

命令调板

1. Right-click -> LiveStamps -> Menu -> Build -> Command      # Only needed first time
2. [cmd/ctrl] + [shift] + [p]
3. Type LiveStamps to see list of commands, enter to execute.

菜单生成

默认的LiveStamps配置仅使用右键上下文菜单。如果您愿意,可以轻松生成侧边栏/工具/命令调板菜单。当新添加戳定义时,也应该刷新菜单生成,以避免使用过多的键盘快捷键。

# Refresh Existing Menus:
Right-click -> LiveStamps -> Menus -> Refresh

# Generate a Menu:
Right-click -> LiveStamps -> Menus -> Build -> [menutype]

# Open Existing Menu To Manually Edit:
Right-click -> LiveStamps -> Menus -> Open -> [menutype]

戳定义导入/导出和备份

Livestamps支持一个简单的戳版本控制系统,允许您轻松共享或备份自定义戳定义。

可用的版本控制功能

# Backup Existing Stamps & User Info:
 Right-Click -> LiveStamps -> Definitions -> Backup

 # Restore Previous Stamp Definitions:
 Right-Click -> LiveStamps -> Definitions -> Restore -> [definition file]

 # To Rename Definitions:
 1. Right-Click -> LiveStamps -> Definitions -> Browse
 2. Rename any files as you wish (keep .sublime-settings extension)

 # To Import or Share Definitions:
 1. Right-Click -> LiveStamps -> Definitions -> Browse
 2. Copy any stamp definition files to or from this directory to import/export

创建自定义戳

1. Right-Click -> LiveStamps -> Definitions -> Open
  2. Custom stamp definitions are defined within the "stamps" key
  3. There are a few examples and instructions to get you started here as well

LiveStamp的组成部分

LiveStamps定义为包含戳输出、正则表达式模式、格式化标志和菜单位置的Python字典。定义新戳非常简单,但对于经验丰富的用户来说,一旦熟悉它,就可以变得相当复杂。让我们开始吧!

LiveStamp至少有以下键

"mystamp": {
  "value": "LiveStamps rule!",
},

# Output: LiveStamps rule!

键参考

# Stamp Keymap:

"[name]": {
  "[menu]"  : string,
  "[value]" : int|string|list *dict can be used for time offsets*
  "[regex]" : string,
  "[stamp]" : string,
  "[tflag]" : string,
},

# Required Keys:

[name]   : The parent key containing the stamp name using snake_case
[value]  : A string/int literal, or list of values to be used for injection.

# Optional Keys:

[menu]   : Groups a stamp under a submenu in the right-click context menu
[regex]  : Regex pattern. Set to auto for docblock. Exclude for static data.
[stamp]  : Formatting string. Python format() flags. See injection flags below. 
[tflag]  : Time Formatting string. Python strftime() flags i.e. "%d-%m-%Y"

戳值

值是戳的核心元数据,可以定义为单个项目或值列表

"mystamp1": {
  "value": "zero",        # A String Literal
},

# Output: zero

"mystamp2": {
  "value": ["zero"],      # Single List Item
},

# Output: zero

"mystamp3": {
  "value": [1, "two", 3]  # Multiple Item Lis:
},

# Output: 1 two 3

魔法值

LiveStamps将生成一些魔法值以帮助您开始。文件元数据、最后修改时间戳和用户信息在刷新时自动创建。

将来还会有更多内容!

# The following stamps are auto generated:

"user"         : Gets current user
"checksum"     : Gets checksum of the current file (algorithm can be modified)
"extension"    : Gets current file extension
"base_name"    : Gets current basename
"file_size"    : Gets current filesize
"file_name"    : Gets current filename
"file_path"    : Gets current filepath
"parent_name"  : Gets name of parent folder
"parent_path"  : Gets path of parent folder
"file_extname" : Gets current filename.extension
"modified"     : Current timestamp using "%c" flag, (preferred local time)

# From "user_info" key in LiveStampsDefinitions.sublime-settings:

"author"      : "Your name here"                                  
"vendor"      : "Your company here"                                     
"email"       : "Your email here"                              
"website"     : "Your website here"                     
"quote"       : "A quote you like"

# Custom info may be added to the "user_info" key if you wish:

"location"    : "Whitehorse, Yukon",
"fav_color"   : "Green",
"gender"      : "male"

超级戳

超级戳是由其他戳或值构建的戳。只需将任何“值”键设置为另一个戳的名称,并且PRESTO插件将将其与戳字典中的定义相匹配。在名称前使用前置下划线以获取原始值而不是格式化输出。这对于签名或其他复杂戳来说非常棒!

超级戳:井字棋

SOURCE:
-------

"tic_tac": {
  "value": "Tic",
  "stamp": "{0} Tac",  # Don't worry about the {0}, it's covered next!
},

# Output -> Tic Tac


USING THE SOURCE VALUE:
-----------------------

"tic": {
  "value": "_tic_tac",  # Leading underscore gets the "value" key of tic_tac
}

# Output -> Tic


USING THE SOURCE STAMP:
-----------------------

"tic_tac_toe": {
  "value": "tic_tac",   # No underscore gets the formattad "stamp" key of tic_tac
  "stamp": "{0} Toe",
}

# Output -> Tic Tac Toe

注入标志

注入标志可以实现强大的格式化和复杂戳设计。如果定义了“戳”键,每个值都将映射到最终输出中的相应注入标志。

注入标志是定义为这样的简单标记

'stamp': "{0} {1} {2}" # Explicit location (stamp values injected by index)
'stamp': "{} {} {}"    # Implicit location (stamp values injected sequentially

基本注入

# All these will output: Have you heard? LiveStamps rule! Thanks TundraTech!

# No injection:

  "mystamp": {
    "value": "Have you heard? LiveStamps rule! Thanks TundraTech!",
  },

# Complete injection:

  "mystamp": {
    "value": "Have you heard? LiveStamps rule! Thanks TundraTech!",
    "stamp": "{0}",
  },

# Partial injection (explicit):

  "mystamp": {
    "value": "LiveStamps rule!",
    "stamp": "Have you heard? {0} Thanks TundraTech!",
  },

# Partial injection (implicit):

  "mystamp": {
    "value": "LiveStamps rule!",
    "stamp": "Have you heard? {} Thanks TundraTech!",
  },

多个注入标志

戳可以轻松接受多个值/戳,并且所有值都通过递归生成,允许您构建尽可能深的子依赖项。

使用不同注入标志的“mystamp”的多种输出

SOURCE STAMP
--------------

"mystamp": {
  "value": ["zero", "one", "two", "three"],
  "stamp": "@mystamp   {0} {1} {2} {3}",
},

# Normal Output: Each value is mapped to a Python format() flag:

  "stamp" : "@mystamp   {0} {1} {2} {3}",
  Output  :  @mystamp   zero one two three


# Mixed ordering is allowed and flags can be injected anywhere:

  "stamp" : "@mystamp   {3} hello {1} {2} world {0}",
  Output  :  @mystamp   three hello one two world zero


# Not all values have to be mapped to a flag

  "stamp" : "@mystamp   {0} {1}",
  Output  :  @mystamp   zero one


# It's OK to define more flags used than values to allow for future expansion

  "stamp" : "@mystamp   {0} {1} {2} {3} {4} {5} {6} {7}",
  Output  :  @mystamp   zero one two three


# Using a flag more than once is OK.

  "stamp" : "@mystamp   {0} {0} {0} {0} {1} {2} {3} {0}",
  Output  :  @mystamp   zero zero zero zero one two three zero


# Using no flags is also OK.

  "stamp" : "@mystamp   ",
  Output  :  @mystamp

使用注入标志的高级格式化

因为每个定义的值都通过Python format()函数进行管道传输,所以这允许LiveStamps将您的表达式扩展到简单的元数据之外。代码片段和强大的转换既快又简单易行。有关可用标志的更多信息,请参阅Python String Format Cookbook

当构建新戳时,打开format()快速参考以获取帮助

Right Click -> LiveStamps -> Help -> format() Reference

示例:将数字87转换为十进制、十六进制、八进制和二进制的不同基数

"bases": {
  "value": 87,
  "stamp": "Base conversion: {0:d} - {0:x} - {0:o} - {0:b}",
},

# Output: Base conversion:  87 - 57 - 127 - 1010111

更加复杂:同时进行漂亮的对齐和基数转换。

"formatted_bases": {
  "value": [87, "\nDecimal","\nHex", "\nOctal", "\nBinary"],
  "stamp": "{1:<10}: {0:d} {2:<10}: {0:x} {3:<10}: {0:o} {4:<10}: {0:b}",
},

Output:

Decimal  : 87 
Hex      : 57 
Octal    : 127 
Binary   : 1010111

时间戳

时间格式化遵循Python strftime()函数,因此需要特殊的“tflag”键。有关可用格式化标志的信息,请参阅www.strftime.org

当构建新戳时,打开strftime()快速参考以获取帮助

Right Click -> LiveStamps -> Help -> strftime() Reference

注意“auto”值,它将当前本地时间作为在设置中定义的获取

"date": {
  "value": "auto",
  "tflag": "%d-%m-%Y",
  "regex": "@date.+",
  "stamp": "@date        {0}",
},

# Output: @date        08-03-2015

"time": {
  "value": "auto",
  "tflag": "%c",
  "regex": "@modified.+",
  "stamp": "@modified    {0}",
},

# Output: @modified    Fri Mar  6 18:21:57 2015

添加时间偏移

时间偏移量可以创建具有不同时区或延迟/提前的时间戳。您可以输入单个偏移量作为原始字符串。当以字符串形式输入偏移量时,必须用冒号“:”或“=”符号作为单位和值之间的分隔符。 分数值会自动处理,并允许负偏移量。

允许的偏移量单位

  • "微秒”
  • “milliseconds”
  • “seconds”
  • “minutes”
  • “hours”
  • “days”
  • “weeks”
  • “months”
  • “years”

偏移量输入语法高度灵活!

# String literal
"value": "microseconds: -21709870.5",

# Timezone support
"value": "America/Whitehorse",

# Multiple offsets in a list
"value": ["years: 10", "weeks: 3"],

# Multiple offsets in a dictionary
"value": {"months": -1.5, "seconds" :30},

格式化偏移量示例

"ahead_ten_hours": {
  "value": "hours: 10",
  "tflag": "%c",
},

# Output: Wed Apr  1 22:29:05 2015

"Maui time": {
  "value": "America/Honolulu",
  "tflag": "%c",
  "stamp": "Maui time is: {0}",
},

# Output: Maui time is: Wed Apr  1 22:29:05 2015

对于原始时间戳未指定标志

"ten_minutes_thirty_seconds_ago": {
  "value": "[minutes=-10, seconds=-30]",
  "tflag": ""
},

正则表达式模式:默认DocBlock正则表达式

为了使戳记在每次文档修改时更新,必须提供正则表达式模式。对于docblock标签,为方便起见,可以使用内置模式,但有一个需要注意的情况

出现在docblock戳记之后的内容将被删除,直到出现换行符

如果您在docblock标签内创建戳记,最好为正则表达式键和戳记键简单地使用“auto”值。在以下示例中,默认正则表达式将注入戳记值到“ * @mystamp ”之后出现的任何内容

默认Docblock示例

# Auto defined stamp/value:

"mystamp": {
  "value": "Is really cool",
  "regex": "auto",
  "stamp": "auto", 
 }

# Which would work great in a docblock header:

/**
 * # Anything here is safe
 * @mystamp Is really cool   # Anything over here is always erased on update
 * # Anything here is safe
 */

生成后实际使用的值:(仅供参考)

"mystamp": {
    "value": "Is really cool",
    "regex": "* @mystamp.+",
    "stamp": "* @mystamp {0}",
  },

自定义正则表达式定义

注意!

正则表达式模式是强大的表达式!

在尝试将其应用于主文件之前,请在单独的文档上测试您的正则表达式!一个意外匹配有效代码的表达式会立即替换它。此外,一个打字错误的“过于宽松”的模式可能会在大型文件中替换大量数据,可能造成数据丢失或硬锁...

访问 www.regexr.comwww.regex101.com 了解更多关于REGEX模式的信息。

修改默认正则表达式模式

Right-Click -> LiveStamps -> Preferences -> Settings - User

# CAUTION!!! Changes here will have a big, potentially dangerous effect:

"autoregex" : " \\* @{0}.+",  # Stamp name injected at flag {0}
"autostamp" : " * @{0} {1}",  # Stamp name injected at flag {0}, values at {1}
"separator" : " ",            # Separator used for "auto" multi value stamps

当然,高级用户可以使用他们想要的任何正则表达式模式,例如日期匹配。您必须特别小心不要使您的模式过于宽松,并记住转义反斜杠和其他正则表达式敏感字符,因为输入是以JSON格式。

dd-mm-yyyy的自定义正则表达式

# Note the escaped backslashes because input is in JSON.

  "date": {
    "value": "Date is: ",
    "tflag": "%d-%m-%Y",
    "regex": "Date is (\\d\\d-\\d\\d-\\d\\d\\d\\d)",
    "stamp": "{0}",
  },

# Output: Date is 28-03-2015

"Sat Mar 28 21:11:31 2015"的自定义正则表达式

# Matches "%c" format flag

"regex": "(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(\s|\s\s)(\d|\d\d)\s(\d\d:\d\d:\d\d)\s\d\d\d\d"