使用 NppExec 和 Ruby 为 Notepad++ 编写新的宏功能

使用 NppExec 和 Ruby 为 Notepad++ 编写新的宏功能

我在美国和欧洲工作,在查看日志或笔记时,在月/日(美国)和日/月(欧盟)格式之间切换会导致歧义(例如,7/8/12 是 7 月 8 日还是 8 月 7 日?)。

我想将 Notepad++ 时间戳功能更改为使用国际格式

YYYY-MM-DD--DAY--HH:MM

2012-08-19--Sun--20:30

请注意,将星期几拼写出来会是一个不错的额外功能,并且可以避免必须在日历中查找那天是星期几。

目前NPP不具备这种灵活性。 有没有办法使用某种宏或脚本来做到这一点,也许使用 Ruby?

答案1

分享如何使用 NppExec 插件和 Ruby 来实现这一点。

解决方案:

方法:获取外部脚本语言(在本例中为 Ruby)返回格式化的时间戳,并让 NppExec 接收它并将其插入到 Notepad++ 中显示的当前文件中的光标位置。

首先配置控制台:

    npe_console v+   // set console to receive output in $(OUTPUT) variable
    npe_console d+   // set current working directory to same as current file

然后在 NppExec > Execute 菜单命令中输入以下代码片段:

    // Diary snippet (Generates timestamp YYYY-MM-DD--DAY--HH:MM for NPP++)
    npp_console disable     // turn off output displaying to console
    // this ruby one-liner does the work
    ruby -r Date -e "dt=DateTime.now; dname = Date::ABBR_DAYNAMES[dt.wday]; puts dt.strftime(\"%Y-%m-%d--#{dname}--%H:%M\");"  
    sel_settext $(OUTPUT)   // put result at cursor in current file
    npp_console enable      // restore output displaying to console
    npp_console 0           // hide the console window

这将使用 Ruby 引擎生成时间戳并将其插入 Notepad++ 中当前文件中光标所在的位置。结果(大约有 500 毫秒的延迟)是时间戳:

    2012-08-20--Mon--20:16

笔记:虽然这确实可以完成工作,但如果有人有一个不依赖任何外部东西(在本例中是 Ruby)的解决方案,那就更好了。


编辑:“生产化”解决方案......(稳健性和便利性)

通过遵循以下步骤,上述解决方案可以投入生产...

一个障碍是关闭 Notepad++ 会丢失控制台配置,因此每次重新启动时都必须进行设置。

因此,我们将控制台配置设置为每次 Notepad++ 启动时自动运行的脚本。

然后将键盘快捷键(热键)关联到日记脚本以方便使用。

步骤1: 将日记代码输入到 NppExec Excute... 对话框中: Plugins > NppExec > Execute...,并为其命名(稍后您将使用该名称)

步骤 1 - 输入日记代码

第2步: 类似地输入setup_console配置代码:

第 2 步 - 输入控制台配置代码

步骤 3、4、5: 在中Plugins > NppExec > Advanced Options,将setup_console设置为启动时运行(3),为日记代码创建菜单项(4),并将菜单项放入菜单中Macro(5):

步骤 3、4、5 - 完成所有设置

第 6 步:为日记脚本设置键盘热键(快捷方式):,Settings > Shortcut Mapper... > Plugins然后向下滚动直到找到您使用的日记脚本名称...

步骤 6 - 键盘快捷键

结果:查看Macros菜单命令,您将看到带有键盘快捷键的新时间戳命令。

结果 - 完成

完毕!

相关内容