Використання NppExec та Ruby для скрипту нової функції макросу для Notepad ++


8

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

Я хотів би змінити функцію «Блокнот ++», щоб використовувати міжнародний формат

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 ++, завдяки потужному набору функцій, який випускається з коробки, ви не маєте уявлення, скільки разів я хотів мати можливість підключити до нього мову мов сценаріїв із графічного інтерфейсу. Дякуємо, що опублікували це!
Бен Річардс

Відповіді:


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

Примітка. Хоча це, безумовно, справляється із дією, якщо хтось має рішення, яке не покладається на щось зовнішнє (в даному випадку Рубі), це було б краще.


Редагувати: "Виробництво" рішення ... (надійність та зручність)

Виконуючи наведені нижче дії, вищезазначене рішення можна виробити ...

Перешкода полягає в тому, що при закритті 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.