नोटपैड ++ के लिए एक नई मैक्रो सुविधा को स्क्रिप्ट करने के लिए NppExec और रूबी का उपयोग करना


8

मैं यूएस और यूरोप में काम करता हूं, और महीने / दिन (यूएस) और दिन / महीने (ईयू) के बीच स्विच करता है, लॉग या नोट्स देखने के दौरान अस्पष्टता की ओर जाता है (उदाहरण 7/8/12 जुलाई 8 या 7 अगस्त?)।

मैं अंतरराष्ट्रीय प्रारूप का उपयोग करने के लिए नोटपैड ++ टाइमस्टैम्प सुविधा बदलना चाहता हूं

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

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

ध्यान दें, सप्ताह का दिन समाप्त हो गया है एक अच्छा अतिरिक्त होगा, और यह देखने के लिए कि कैलेंडर में किस दिन यह होने से बचा जाता है।

वर्तमान में एनपीपी में यह लचीलापन नहीं है। क्या किसी मैक्रो या स्क्रिप्ट का उपयोग करके ऐसा करने का एक तरीका है, शायद रूबी का उपयोग करना?


DD & DAY और DAY & HH के बीच क्या डैश हैं?
लुई

डबल डैश - दिन से समय से तारीख को नेत्रहीन सेट-ऑफ करना है। सौंदर्य की तुलना में अधिक मनभावन लगता है 2012-08-19-Sun-20:30। (टाइमस्टैम्प वर्णों की एक एकल इकाई होना चाहते हैं, इसलिए रिक्त स्थान नहीं चाहते हैं ...) तदनुसार प्रश्न संपादित किया है।
असद अब्राहिम

1
वर्षों से Notepad ++ का उपयोग करके भारी कोडिंग का काम किया जा रहा है, इसके आउट-ऑफ-द-बॉक्स शक्तिशाली फीचरसेट के कारण, आपको पता नहीं है कि GUI के भीतर स्क्रिप्टिंग भाषा के साथ कितनी बार मैं इसमें प्रवेश करना चाहता हूं। इसे पोस्ट करने के लिए धन्यवाद!
बेन रिचर्ड्स

जवाबों:


6

NppExec प्लगइन और रूबी का उपयोग करके इसे साझा करना।

उपाय:

दृष्टिकोण : एक बाहरी स्क्रिप्टिंग भाषा प्राप्त करें (इस मामले में रूबी) स्वरूपित टाइमस्टैम्प को वापस करने के लिए और इसे प्राप्त करने के लिए 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

यह टाइमस्टैम्प उत्पन्न करने के लिए रूबी इंजन का उपयोग करता है और इसे वहीं डालता है जहाँ कर्सर नोटपैड ++ में करंट फाइल में होता है। परिणाम (लगभग 500ms देरी के साथ) टाइमस्टैम्प है:

    2012-08-20--Mon--20:16

नोट: हालांकि यह निश्चित रूप से काम करता है, अगर किसी के पास कोई समाधान है जो किसी भी बाहरी चीज़ पर भरोसा नहीं करता है (इस मामले में रूबी), तो यह बेहतर होगा।


संपादित करें: "उत्पादन" समाधान ... (मजबूती और सुविधा)

नीचे दिए गए चरणों का पालन करके, उपरोक्त समाधान का उत्पादन किया जा सकता है ...

एक बाधा यह है कि नोटपैड ++ को बंद करने से कंसोल कॉन्फ़िगरेशन खो जाता है, इसलिए इसे हर री-स्टार्ट पर सेटअप करना होगा।

इसलिए हम कंसोल कॉन्फ़िगरेशन को एक स्क्रिप्ट के रूप में सेट करते हैं जो हर बार नोटपैड ++ शुरू होने पर स्वचालित रूप से चलाया जाता है।

फिर सुविधा के लिए एक कीबोर्ड शॉर्टकट (हॉटकी) को डायरी स्क्रिप्ट से संबद्ध करें।

चरण 1: डायरी कोड को NppExec Excute में दर्ज करें ... संवाद:, Plugins > NppExec > Execute...इसे एक नाम देते हुए (आप बाद में उस नाम का उपयोग करेंगे)

चरण 1 - डायरी कोड दर्ज करें

चरण 2: इसी तरह setup_console कॉन्फ़िगरेशन कोड दर्ज करें:

चरण 2 - कंसोल कॉन्फ़िगरेशन कोड दर्ज करें

चरण 3, 4, 5: में Plugins > NppExec > Advanced Options, स्टार्टअप (3) पर चलने के लिए setup_console सेट करें, डायरी कोड (4) के लिए एक मेनू आइटम बनाएं, और मेनू आइटम को Macroमेनू (5) में डालें :

चरण 3,4,5 - यह सब सेटअप हो रहा है

चरण 6: एक कीबोर्ड हॉटकी (शॉर्टकट) को डायरी स्क्रिप्ट पर सेट करें: Settings > Shortcut Mapper... > Pluginsऔर तब तक नीचे स्क्रॉल करें जब तक आप डायरी स्क्रिप्ट का नाम न पा लें ...

चरण 6 - कीबोर्ड शॉर्टकट

परिणाम:Macros मेनू कमांड के तहत , आप कीबोर्ड शॉर्टकट के साथ अपना नया टाइमस्टैम्प कमांड देखेंगे।

परिणाम - किया गया

किया हुआ!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.