Notepad++中NppExec的使用之一:基本用法


 一直用NPP,很長時間了,最近才學習它的各種插件,這篇文章是根據NppExec的用戶指南寫的。很多地方是翻譯的,但不全是翻譯,同時也有些東西沒有翻譯。

一、何為NppExec

簡單的說,這個插件可以讓用戶在NPP中直接運行一些命令和程序,而不用啟動這些命令和程序對應的實際工具或編譯器。

1. NppExec是...

  • NppExec是介於Notepad++和外部工具/編譯器之間的一個中間件。它允許用戶在NPP中直接運行這些工具/編譯器。
  • NppExec是一個控制台(Console)窗口,它能展示運行過程的輸出結果,並將控制台窗口的輸入重新定向(redirect)到運行過程中(有一些限制)。
  • NppExec是其內部命令的一個解釋器。通過"Execute..."(執行)對話框,它能逐條執行多條NppExec命令(也稱為NppExec腳本),也能從控制台窗口直接執行單條命令。

2. NppExec不是...

  • NppExec並不是一個控制台模擬器(console emulator)。NppExec的Console不是一個“真正”的控制台窗口,它沒有提供控制台屏幕緩沖區(console screen buffer)。我的理解是NppExec的Console窗口中只是輸出代碼在真正的控制台中運行的結果。
  • NppExec並不是一個命令解釋器。雖然它能執行NppExec的命令或腳本,但它不能理解諸如'copy'之類的命令。
  • NppExec並不是一個編譯器。它能執行外部編譯器的代碼,但它本身不是編譯器,執行這些代碼不是它自己的功能。

二、安裝

在“插件'菜單下打開插件管理器(Plugin Manager),在可以插件(Available)中找到NppExec,選擇后點擊下方的"Install"就可以了。安裝完成后NPP會提示重啟,重啟后在插件菜單下就能看到NppExec。

三、基本用法

1. 獲取幫助

Plugins -> NppExec -> Help/Manual :打開用戶指南。

Plugins -> NppExec -> Help/Docs... :打開NppExec.txt和NppExec_TechInfo.txt文件,前者包括NppExec的所有命令、環境變量的語法和說明,后者包括NppExec的一些高級”隱藏“設置。

help:在Console中輸入help可以查看以下內容

  • 控制台快捷鍵
  • 控制台命令
  • 通用命令(General commands)和環境變量

help <command> :help后加上命令的名字(中間用空格隔開)可以直接查看該命令的幫助文檔。

2. 簡介

NppExec的主要原理與NPP中的“運行”命令(F5)相同:執行給定的命令。通常就是以給定的參數執行一些程序或工具,參數能夠以NPP中環境變量的形式來傳遞。比如,在IE中啟動當前文件或者用某個編譯器編譯當前文件。NppExec提供了額外功能:

  • 它有一個控制台窗口顯示控制台程序的輸出
  • 它允許用戶逐條執行多條命令
  • 它提供了NPP的所有環境變量,也加入了它自己的若干變量
  • 它有一些額外命令,只有想不到,沒有做不到 :)
  • niubility :)

NppExec中執行命令的四種方式: (四種方式)

  • 使用NppExec的控制台窗口:輸入命令,按Enter執行
  • 使用NppExec的“Execute...”對話框:可以輸入多條命令,保存為NppExec腳本,執行時逐條執行
  • 使用NppExec的"npp_exec <script>"命令:執行腳本
  • 使用NppExec的"npp_exec <file>"命令:執行文本文件保存的腳本

BTW,NppExec的菜單項使用第三種方法執行腳本。

 

有關內部過程和外部過程在下面“小試牛刀”這一節中。

3. 小試牛刀

3.1 以內部過程的方式執行程序

在控制台窗口或Execute窗口直接輸入程序的名字(必要時添加路徑)就可以按內部過程的方式運行程序,輸入時也可以帶參數。

比如:輸入cmd可以運行windows的命令提示窗口(cmd.exe程序),由於cmd本身是控制台程序,因此它會在NppExec的Console窗口中運行,也就可以接着在Console窗口中直接輸入cmd的命令來運行,用exit命令退出cmd。 又,輸入calc則運行windows自帶的計算器。由於計算器不是控制台程序,因此它獨立運行。

可以看到,以內部過程運行程序,不管是控制台程序還是非控制台程序,開始都打印Process started >>>,結束后打印<<< Process finished.(Exit code 0)。括號中的Exit code值可能會改變,表示不同的退出狀態。這是NppExec在等待內部過程執行完畢。

下面是cmd中查看系統時間的一個例子(控制台中):

 1 ================ READY ================
 2 cmd  3 cmd  4 Process started >>>
 5 Microsoft Windows [版本 6.3.9600]  6 (c) 2013 Microsoft Corporation。保留所有權利。  7 
 8 C:\Users\acton\Desktop>time /t  9 time /t 10 00:13
11 
12 C:\Users\acton\Desktop>exit 13 exit 14 <<< Process finished. (Exit code 0) 15 ================ READY ================

 

也可以在運行程序時帶參數,查看時間可以寫成:

1 ================ READY ================
2 cmd /c time /t 3 cmd /c time /t 4 Process started >>>
5 00:16
6 <<< Process finished. (Exit code 0) 7 ================ READY ================

.cmd和.bat文件也能這樣執行,但不能省略擴展名。

3.2 以外部過程的方式執行程序

使用npp_run <command>,如下,會打開cmd窗口,Console中不會輸出Process started和Process finished,NppExec不會等待外部過程的執行。

1 ================ READY ================
2 npp_run cmd 3 NPP_RUN: cmd 4 ================ READY ================

小結:NppExec能理解的只是它的內部命令和環境變量。

  • 當輸入其他命令時,比如"copy", "cmd"或"calc",NppExec嘗試將其作為子過程來執行,i.e. 它執行CreateProcess(...)直到子過程結束。
  • 當輸入類似"npp_run cmd"或"npp_run calc"時,NppExec嘗試以外部過程的方式執行指定的命令,i.e. 它執行ShellExecute(...),且不關心這個過程。

4. NppExec的子菜單

  • Execute...:打開 "Execute..."對話框(默認熱鍵F6)
  • Direct Execute Previous:執行之前的腳本(默認Ctrl+F6)
  • Show Console dialog:打開或隱藏Console窗口(默認Ctrl+~)
  • Toggle Console dialog:激活或取消激活Console窗口(依賴Console的"hide toggled Console"選項,但是找不到這個選項在哪里)
  • Console Commands History:Console命令歷史是否可用(可用時上下鍵自動輸入歷史命令)
  • Console Output...:打開Console Output/Input encoding對話框,選擇輸入輸出的編碼
  • No internal messages:不顯示命令確認等內部消息。比較如下,前面沒有內部消息,后面有內部消息:
 1 ================ READY ================
 2 cmd  3 Microsoft Windows [版本 6.3.9600]  4 (c) 2013 Microsoft Corporation。保留所有權利。  5 
 6 C:\Users\acton\Desktop>exit  7 exit  8 ================ READY ================
 9 cmd 10 cmd 11 Process started >>>
12 Microsoft Windows [版本 6.3.9600] 13 (c) 2013 Microsoft Corporation。保留所有權利。 14 
15 C:\Users\acton\Desktop>exit 16 exit 17 <<< Process finished. (Exit code 0) 18 ================ READY ================
  • Save all files on execute:執行NppExec腳本前始終保存修改過的文件
  • Follow $(CURRENT_DIRECTORY):始終以當前目錄執行腳本(當前目錄用cd命令查看或更改,請help)
  • Disable command aliases:命令別名不可用(用NPE_CMDALIAS查看別名)
  • Console Output Filters...:顯示NppExec Console Filters對話框(Shift + F6)
  • Advanced Options...:高級選項(可以添加菜單項,用於執行腳本)
  • Change Console Font...:字體
  • Help/Manual Help/Docs...
  • Help/About

5. NppExec Console

可以用菜單、快捷鍵和工具欄圖標打開,倒數第二個圖標就是(反正我的是哈...)。

高級設置中的ToolbarBtn可以選擇在工具欄顯示Console/Execute/Execute Previous中的一個或不顯示任何圖標。

主要作用:

  • 執行命令(Enter鍵)
  • 當執行內部子過程,且為控制台程序時,顯示運行結果(比如Python或cmd的運行結果)
  • 顯示內部消息
  • help
  • ...(有一個沒看懂)

6. "Execute..."

打開方式:F6、菜單或工具欄(需要設置)。

用於執行腳本。

可以在<temporary script>中執行,也可以點擊Save保存腳本。保存后可以在高級選項中設置為NppExec的菜單項,分配熱鍵。 比如以下腳本:

1 // save current file 2 NPP_SAVE 3 // copy current file to C:\Backup 4 cmd /c copy "$(FULL_CURRENT_PATH)" "C:\Backup\$(FILE_NAME)" /Y

首先保存當前文件,然后用cmd中的copy命令復制到C:\Backup下,其中//開始的是注釋。

7. NppExec腳本

NppExec腳本是一個命令集。

  • 可以是NppExec的內部命令,比如"cls", "npp_save", "npe_debuglog"等
  • 也可以是可執行的一些外部程序或命令,比如"cmd", "calc", "C:\tools\tcc\tcc.exe" 。
  • 每條命令都可以帶參數。比如以下幾條命令:
1 INPUTBOX "Input something:" : something 2 NPP_EXEC "script name" "param 1" "param 2"
3 cmd /c copy /? 4 "C:\tools\tcc\tcc.exe" "$(FULL_CURRENT_PATH)" -run

注意:

  • 一條命令書寫在一行中。
  • 注釋以//開始。
  • 腳本可以保存為txt文件,用npp_exec執行。
  • 腳本存儲在插件配置目錄下,該目錄存儲在環境變量$(PLUGINS_CONFIG_DIR)中。
  • 保存的腳本在npes_saved.txt中,從其中可以查看腳本保存的格式。臨時腳本在npes_temp.txt中。

重點是執行腳本的四種方式、兩類過程(內部和外部)和腳本基礎知識,下次介紹環境變量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM