<p>Atom 编辑器需用 timestamp 插件插入时间戳,它成熟可控、支持毫秒与时区,配置快捷键即可触发;snippet 的 $CURRENT_* 变量存在格式不统一、时间冻结、无时区、多光标同值等缺陷;自研插件易踩 UTC 时区、命令注册、多光标处理等坑。</p>

Atom 编辑器原生不支持插入当前时间,也没有类似 Sublime 的 insert_date 命令——想手动标记日志、注释或变更点,必须靠插件或 snippet 实现。自己写 CoffeeScript 插件成本高、维护难,不推荐;最稳的路径是用现成插件 + 正确配置。
用 timestamp 插件最省事
Atom 社区里唯一成熟、持续维护、支持毫秒和时区的时间戳插件是 timestamp(不是 insert-date 或其他同名变体)。它不监听保存事件,不自动注入,只响应快捷键,行为可控。
- 安装方式:Settings → Install → 搜索
timestamp→ 点 Install(作者是atom-community,GitHub 仓库活跃) - 默认快捷键是
ctrl+alt+t(Windows/Linux)或cmd+alt+t(macOS),触发后光标处插入2026-07-23 21:23:45 - 要带毫秒?改用户配置:
~/.atom/config.cson里加一行:"timestamp": {"format": "%Y-%m-%dT%H:%M:%S.%f"[:23] + "+08:00"} - 别用
%z:Atom 的strftime实现不解析时区偏移,硬写会原样输出文字
用 snippet + $CURRENT_* 变量有硬伤
Atom 支持在 .sublime-snippet 风格的 snippet 中用 $CURRENT_YEAR 等变量,但实际用起来问题明显:
-
$CURRENT_MONTH输出7而非07,格式不统一,日志排序会乱 - 变量值在 snippet 加载时固化,不是插入瞬间求值——如果你按快捷键前切走了窗口,时间就“冻住”了
- 没有时区控制,全凭系统本地时间,协作时容易误判 UTC 时间
- 多光标下每个光标都插同一份时间(因为变量只算一次),不像
timestamp插件能为每个光标单独生成时间
为什么别自己写 Atom 插件
有人尝试在 ~/.atom/packages/ 下新建 CoffeeScript 插件调 Date.now(),结果踩了三个坑:
- CoffeeScript 的
new Date().toISOString()默认输出 UTC 时间,但没提供.toLocaleString()的时区参数,硬绕要依赖第三方库 - Atom 的命令注册机制要求插件导出
provide对象,漏写或路径错会导致命令面板里找不到timestamp:insert - 多光标处理必须手动遍历
editor.getSelectedBufferRanges(),且每个 range 要用editor.insertTextAtPosition()单独插,稍错就覆盖内容
真正麻烦的不是“怎么插时间”,而是“插得准不准、撤不撤得回、协不协作”。timestamp 插件默认不改已有行、不监听保存、不污染 Git diff,这些细节比格式本身更关键。

















