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


8

我在美国和欧洲工作,在浏览日志或便笺时(例如7/8/12是7月8日还是8月7日?),在月/日(US)和日/月(EU)格式之间切换会导致歧义。

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

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

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

请注意,将星期几详细列出会是一个不错的选择,并且避免了必须查看日历中的星期几。

目前,核电厂没有这种灵活性。 有没有办法使用某种宏或某种脚本(也许使用Ruby)来做到这一点?


DD&DAY和DAY&HH之间的破折号是什么?
Louis Waweru 2012年

双破折号-是从时间的当天起可视化日期。看起来比美学更令人愉快2012-08-19-Sun-20:30。(希望时间戳记是单个字符单位,因此不需要空格...)已经相应地编辑了问题。
阿萨德·易卜拉欣

1
由于Notepad ++具有开箱即用的强大功能集,多年来使用它们进行了大量的编码工作,您不知道我希望能够使用GUI内的脚本语言将其插入多少次。感谢您发布!
本·理查兹

Answers:


6

分享使用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>执行菜单命令中,输入以下代码段:

    // 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 ++中当前文件中的位置。结果(大约有500ms的延迟)是时间戳:

    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菜单命令下查看,您将看到带有键盘快捷键的新Timestamp命令。

结果-完成

做完了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.