Использование NppExec и Ruby для написания скрипта новой функции макроса для Notepad++

Использование NppExec и Ruby для написания скрипта новой функции макроса для Notepad++

Я работаю в США и Европе, и переключение между форматами месяц/день (США) и день/месяц (ЕС) приводит к неоднозначности при просмотре журналов или заметок (например, 7/8/12 — это 8 июля или 7 августа?).

Я хотел бы изменить функцию временной метки Notepad++, чтобы использовать международный формат.

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

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

Обратите внимание, что указание ДНЯ недели прописью было бы приятным дополнением и избавило бы от необходимости искать, какой сегодня день в календаре.

В настоящее время АЭС не обладает такой гибкостью. Есть ли способ сделать это с помощью макроса или скрипта, возможно, с использованием 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 > Выполнить введите следующий фрагмент:

    // 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меню команд вы увидите новую команду «Отметка времени» с сочетанием клавиш.

Результат - сделано

Сделанный!

Связанный контент