Sử dụng NppExec và Ruby để tạo kịch bản một tính năng macro mới cho Notepad ++


8

Tôi làm việc ở Mỹ và Châu Âu, và việc chuyển đổi giữa các định dạng tháng / ngày (Hoa Kỳ) và ngày / tháng (EU) dẫn đến sự mơ hồ khi xem qua nhật ký hoặc ghi chú (ví dụ: 7/8/12 ngày 8 tháng 7 hoặc ngày 7 tháng 8?).

Tôi muốn thay đổi tính năng dấu thời gian Notepad ++ để sử dụng định dạng quốc tế

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

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

Lưu ý, có NGÀY trong tuần được đánh vần sẽ là một phần bổ sung tuyệt vời và tránh phải tìm kiếm ngày nào trong lịch.

Hiện tại NPP không có tính linh hoạt này. Có cách nào để làm điều này bằng cách sử dụng macro hoặc tập lệnh nào đó, có lẽ bằng Ruby?


Dấu gạch ngang giữa DD & NGÀY và NGÀY & HH là gì?
Louis Waweru

Dấu gạch ngang kép - sẽ được thiết lập trực quan từ ngày kể từ ngày. Có vẻ hài lòng về mặt thẩm mỹ hơn 2012-08-19-Sun-20:30. (Muốn dấu thời gian là một đơn vị ký tự, do đó không muốn khoảng trắng ...) Đã chỉnh sửa câu hỏi tương ứng.
Assad Ebrahim

1
Đã thực hiện công việc mã hóa nặng nề trong nhiều năm qua bằng Notepad ++ nhờ bộ tính năng mạnh mẽ vượt trội, bạn không biết mình đã muốn có thể cắm nó với ngôn ngữ script bao nhiêu lần trong GUI. Cảm ơn bạn đã đăng bài này!
Ben Richards

Câu trả lời:


6

Chia sẻ cách thực hiện việc này bằng cách sử dụng plugin NppExec và Ruby.

Giải pháp:

Cách tiếp cận : Nhận ngôn ngữ kịch bản lệnh bên ngoài (trong trường hợp này là Ruby) để trả về dấu thời gian được định dạng và để NppExec nhận nó và chèn nó vào vị trí con trỏ trong tệp hiện tại được hiển thị trong Notepad ++.

Đầu tiên cấu hình bàn điều khiển:

    npe_console v+   // set console to receive output in $(OUTPUT) variable
    npe_console d+   // set current working directory to same as current file

Sau đó, trong lệnh NppExec> Thực thi lệnh, nhập đoạn mã sau:

    // 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

Điều này sử dụng công cụ Ruby để tạo dấu thời gian và chèn nó vào nơi con trỏ nằm trong tệp hiện tại trong Notepad ++. Kết quả (với độ trễ khoảng 500ms) là dấu thời gian:

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

Lưu ý: Mặc dù điều này chắc chắn thực hiện công việc, nhưng nếu có ai có giải pháp không phụ thuộc vào bất cứ điều gì bên ngoài (trong trường hợp này là Ruby), điều đó sẽ tốt hơn.


Chỉnh sửa: "Sản xuất" giải pháp ... (mạnh mẽ và tiện lợi)

Bằng cách làm theo các bước dưới đây, giải pháp trên có thể được sản xuất ...

Một trở ngại là việc đóng Notepad ++ sẽ mất cấu hình giao diện điều khiển, do đó, điều này phải được thiết lập khi khởi động lại.

Vì vậy, chúng tôi thiết lập cấu hình bảng điều khiển dưới dạng tập lệnh được chạy tự động mỗi khi Notepad ++ khởi động.

Sau đó liên kết một phím tắt (phím nóng) với tập lệnh nhật ký để thuận tiện.

Bước 1: Nhập mã nhật ký vào hộp thoại NppExec Excute ... Plugins > NppExec > Execute..., đặt tên cho nó (bạn sẽ sử dụng tên đó sau)

Bước 1 - Nhập mã nhật ký

Bước 2: Nhập mã cấu hình setup_console tương tự:

Bước 2 - Nhập mã cấu hình bảng điều khiển

Bước 3, 4, 5: Vào Plugins > NppExec > Advanced Options, đặt setup_console để chạy khi khởi động (3), tạo một mục Menu cho mã nhật ký (4) và đặt mục Menu vào Macromenu (5):

Các bước 3,4,5 - Bắt tất cả thiết lập

Bước 6: Đặt phím nóng bàn phím (phím tắt) thành tập lệnh nhật ký: Settings > Shortcut Mapper... > Pluginsvà cuộn xuống cho đến khi bạn tìm thấy tên tập lệnh nhật ký bạn đã sử dụng ...

Bước 6 - Phím tắt

Kết quả: Nhìn dưới Macroslệnh menu, bạn sẽ thấy lệnh Dấu thời gian mới của mình bằng phím tắt.

Kết quả - xong

Làm xong!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.