2009-07-09 19 views
16

Tôi muốn tạo notepad ++ chạy lệnh "ruby {filename_here}" nếu tên tệp hiện tại kết thúc bằng .rb và "perl {filename_here}" nếu nó kết thúc bằng .pl. Tôi đã cố gắng sử dụng các plugin NppExec, nhưng nó không thể làm công cụ có điều kiện, vì vậy tôi đã viết một con dơiLàm thế nào để tạo kịch bản chạy Notepad ++ dựa trên tên của nó?

@echo off 

if /i %~sx1 == .pl perl "%~f1" 
if /i %~sx1 == .rb ruby "%~f1" 
if /i %~sx1 == .php php "%~f1" 

Bây giờ tôi có thể sử dụng nó từ dòng lệnh như C: \ Program Files \ Notepad ++> Tập lệnh RunScript "D \ pl.pl" và nó hoạt động tốt. Bây giờ làm thế nào tôi có thể ràng buộc một số khóa trong Notepad ++ thành "runcript $ (FULL_CURRENT_PATH)"? Tôi đã cố gắng sử dụng Run-> Run menu (F5), nhưng nó dường như không hoạt động ..

Trả lời

21

Bạn cần đặt tên tệp ở cuối lệnh. Trong Run (F5) hộp thoại, hãy thử này:

runscript $(FULL_CURRENT_PATH) 

Nếu bạn muốn kiểm tra nó ra, bạn có thể đặt một & pause ở cuối, chỉ để xem nếu nó làm việc.

Bạn cũng có thể tinh chỉnh kịch bản của bạn một chút để mỗi tập tin không kiểm tra cho mỗi lần gia hạn, bằng sợ hãi GOTO lệnh với nhãn mở rộng tập tin:

@echo off 
GOTO %~sx1 
:.pl 
    perl "%~f1" 
    GOTO end 
:.rb 
    ruby "%~f1" 
    GOTO end 
:.php 
    php "%~f1" 
    GOTO end 
:end 
+11

Trong phiên bản Notepad ++ hiện tại '$ (FULL_CURRENT_PATH)' đã chứa tên tệp. –

+1

Có một lỗi ở đây bạn cần phải chắc chắn rằng bạn sử dụng runcript "$ (Full_CURRENT_PATH)" hoặc nếu không bạn sẽ nhận được một lỗi nếu bạn kịch bản nằm trong một thư mục có không gian trong đó. –

+1

Không cần bản chạy.bat ở tất cả - chỉ cần làm "$ (Full_CURRENT_PATH)" và Windows sẽ gửi tệp đến đúng thực thi miễn là các liên kết tệp và PATHEXT được đặt chính xác – dankingsbury

1

Bạn có thể thử npp_exec sử dụng đoạn mã sau :

NPP_SAVE 
SET Executer = execute$(EXT_PART) 
NPP_EXEC "$(Executer)" 

Và sau đó sử dụng một kịch bản có tên execute.rb:

perl $(FULL_CURRENT_PATH) //or something like that 

phương pháp này được mô tả here

4

Tôi đã gặp sự cố khi hoạt động để nó giữ cửa sổ trình bao mở ra trong khi tôi xem xét nó đã làm gì. Đưa "& tạm dừng" ở cuối không có vẻ để giúp đỡ, cho đến khi tôi thêm cmd /c tại phần đầu:

cmd /c c:\php\php.exe -l "$(FULL_CURRENT_PATH)" & pause

Đối với việc giữ các kết quả lệnh trên màn hình, bạn có thể sử dụng/k switch, theo đề xuất của George: cmd /k c:\php\php.exe -l "$(FULL_CURRENT_PATH)"

Điều đó thật tuyệt, tôi sử dụng nó để kiểm tra cú pháp nhanh trong Notepad ++.

+2

Bạn cũng có thể thử sử dụng/k thay vì/c và sau đó thoát khỏi & tạm dừng./c chấm dứt nơi/k vẫn còn. – George

+1

Đó là một điều tốt, George. Có vẻ như một người đàn ông không bao giờ có thể học đủ công tắc vỏ của mình :) – userfuser

6

Trong notepad ++ phiên bản 6.2, chạy trên Windows, chỉ cần sử dụng "$ (FULL_CURRENT_PATH)", với các dấu ngoặc kép, vì vậy các tập tin sẽ được mở ra bằng cách sử dụng chương trình mặc định có liên quan đến tập tin. Vì vậy, hãy chắc chắn rằng "chỉnh sửa bằng notepad ++" là NOT hành động nhấp đúp mặc định.

1

Có plugin được gọi là RunMe có thể mở tệp hiện tại trong chương trình mặc định. Đây là giải pháp tốt hơn lệnh "$ (FULL_CURRENT_PATH)" vì nó thay đổi thư mục hiện tại thành đường dẫn tệp và lệnh đó chạy tệp trong đường dẫn N ++.

+0

Tôi đã xóa lệnh phím tắt cho 'mainmenu> Run' và đặt' Shell Thực thi tệp hiện tại' thành 'F5' nhưng không mất. Lạ thật. Nếu tôi gọi hàm từ menu nó hoạt động. – bgmCoder

Các vấn đề liên quan