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


8

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

Я хочу изменить функцию отметки времени в Notepad ++ для использования международного формата

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

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

Обратите внимание, что прописанный ДЕНЬ недели был бы хорошим дополнением, и в нем не нужно искать, какой день был в календаре.

В настоящее время АЭС не обладает такой гибкостью. Есть ли способ сделать это с помощью макроса или сценария, возможно, с использованием Ruby?


Каковы черты между DD & DAY и DAY & HH?
Луи Ваверу

Двойные черточки - это визуальное замещение даты от дня от времени. Кажется более приятным с эстетической точки зрения, чем 2012-08-19-Sun-20:30. (Хотелось бы, чтобы отметка времени представляла собой одну единицу символов, поэтому не нужно пробелов ...) Отредактировал вопрос соответствующим образом.
Асад Эбрахим

1
Проделав тяжелую работу по кодированию в течение многих лет с использованием Notepad ++ из-за его мощного набора функций, вы не представляете, сколько раз я хотел иметь возможность подключаться к нему с помощью языка сценариев из GUI. Спасибо за публикацию этого!
Бен Ричардс

Ответы:


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 ++. Результат (с задержкой около 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меню, вы увидите новую команду Timestamp с сочетанием клавиш.

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

Выполнено!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.