การใช้ NppExec และ Ruby เพื่อสคริปต์คุณลักษณะแมโครใหม่สำหรับ Notepad ++


8

ฉันทำงานในสหรัฐอเมริกาและยุโรปและการสลับระหว่างรูปแบบเดือน / วัน (US) และวัน / เดือน (EU) นำไปสู่ความคลุมเครือเมื่อมองดูบันทึกหรือบันทึกย่อ (เช่น 7/8/12 กรกฎาคม 8 หรือ 7 สิงหาคม?)

ฉันต้องการเปลี่ยนคุณลักษณะการประทับเวลา Notepad ++ เพื่อใช้รูปแบบสากล

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

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

โปรดทราบว่าการสะกดคำว่าวันในสัปดาห์นั้นเป็นสิ่งที่ดีมากและหลีกเลี่ยงการค้นหาว่าเป็นวันใดในปฏิทิน

ปัจจุบัน NPP ไม่มีความยืดหยุ่นนี้ มีวิธีทำเช่นนี้โดยใช้แมโครหรือสคริปต์บางชนิดอาจใช้ Ruby หรือไม่?


ขีดคั่นระหว่าง DD & DAY และ DAY & HH คืออะไร
Louis Waweru

เครื่องหมายขีดคั่นคู่ - ใช้เพื่อกำหนดวันที่ออกจากวันนับจากเวลา 2012-08-19-Sun-20:30ดูเหมือนจะมากขึ้นกว่าที่ชื่นชอบความสุนทรีย์ (ต้องการให้บันทึกเวลาเป็นหน่วยเดียวของอักขระดังนั้นจึงไม่ต้องการเว้นวรรค ... ) ได้แก้ไขคำถามตามนั้น
Assad Ebrahim

1
หลังจากใช้งานการเขียนโค้ดจำนวนมากอย่างหนักในช่วงหลายปีที่ผ่านมาโดยใช้ Notepad ++ เนื่องจากชุดฟีเจอร์ที่ทรงพลังออกมานอกกล่องคุณไม่ทราบเลยว่ามีกี่ครั้งที่ฉันต้องการเสียบมันเข้ากับภาษาสคริปต์จากภายใน GUI ขอบคุณสำหรับการโพสต์นี้!
Ben Richards

คำตอบ:


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 ++ ผลลัพธ์ (ที่มีความล่าช้าประมาณ 500ms) คือการประทับเวลา:

    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 ใหม่พร้อมแป้นพิมพ์ลัด

ผลลัพธ์ - เสร็จสิ้น

ทำ!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.