NppExecとRubyを使用してNotepad ++の新しいマクロ機能をスクリプト化する


8

私は米国とヨーロッパで働いており、月/日(US)と日/月(EU)の形式を切り替えると、ログやメモを見るときに曖昧さが生じます(例:7/8/12 7月8日または7月8日ですか?)。

国際形式を使用するようにNotepad ++タイムスタンプ機能を変更したい

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

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

曜日を明記することはすばらしい追加であり、カレンダーで何日であったかを調べる必要がないことに注意してください。

現在、NPPにはこの柔軟性はありません。 おそらくRubyを使用して、何らかのマクロまたはスクリプトを使用してこれを行う方法はありますか?


DD&DAYとDAY&HHの間のダッシュは何ですか?
Louis Waweru 2012

二重ダッシュ-日付と時刻を視覚的に区別するためのものです。見た目よりも審美的に楽しいようです2012-08-19-Sun-20:30。(タイムスタンプを1単位の文字にしたいので、スペースは必要ありません...)それに応じて質問を編集しました。
Assad Ebrahim 2012

1
すぐに使える強力な機能セットによりNotepad ++を使用して何年にもわたって大量のコーディング作業を行ってきたので、GUI内からスクリプト言語を使用して何回プラグインできるようにしたいのか、まったくわかりません。これを投稿してくれてありがとう!
ベンリチャーズ

回答:


6

NppExecプラグインとRubyを使用してこれを行う方法を共有します。

解決:

アプローチ:外部スクリプト言語(この場合はRuby)を取得して、フォーマットされたタイムスタンプを返し、NppExecがそれを受け取って、メモ帳++に示されている現在のファイルのカーソル位置に挿入します。

最初にコンソールを設定します。

    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メニューコマンドの下に、キーボードショートカットを含む新しいタイムスタンプコマンドが表示されます。

結果-完了

できた!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.