[PSPad] PSPad的Scripting功能初探

由於Java IDE通常都很龐大,開啟時會耗費許多系統資源與載入時間,因此有些小程式或修改幅度不大的程式,經常都是使用PSPad之類的文書編輯系統來直接修改,修改、測試完成後就複製到實際運行環境,先前發表的[Windows] 部署相同目錄結構檔案的簡便方法就是為了方便複製檔案而寫的小Script,因為PSPad由4.3版開始就提供了透過WScrip執行的Script環境,所以特別的研究要如何簡化複製程式的作法。

PSPad
安裝目錄的Scripts資料夾與功能表的Scripts是對應的,我們把要執行的VBScript或JavaScript放到對應的資料夾裡,再透過
Scripts功能表裡的【重新編譯 Scripts】來重新產生其下的功能表與各Script檔;例如功能表上的VBScript
sample對應的檔案就是C:\Program Files\PSPad\Scripts\VBScript\Sample.vbs,VBScript Sample的子功能選項就是Sample.vbs裡的多個副常式(Sub routine)。

PSPad的Script有幾個固定的格式必須遵守:

  1. 開頭標明程式名稱(稱為module_name),其名稱必須唯一
  2. 必須有Init副常式,在Init裡以addMenuItem將可供執行的副常式加到功能表上;addMenuItem最多可有4個參數:
    1. 功能選項字串:顯示在功能表上的標題文字
    2. 上層功能選項名稱:若為空白則該副常式在Scripts功能表獨立一項,若有別的字串,則為該字串的子功能選項
    3. 副常式名稱字串
    4. 執行此常式的快速鍵字串(選項,可有可無)

Sample.vbs範例如下(其結果由PSPad的Scripts可看到):

const module_name  = "VBSample"         'this name must be unique !!!
const module_ver   = "0.001a"            'version

' name "Init" is required, its called automatically during initialization to create menu items
sub Init
  addMenuItem "Print all files","", "PrintAll", "Shift+Ctrl+P"     ' 自己佔獨立一列,無子功能表; 定義了快速鍵
  addMenuItem "Main method", "VBscript sample", "Main"    ' 在VBscript sample項目下的子功能選項
  addMenuItem "PSPad version","VBscript sample", "Demo1"
  addMenuItem "Script module version","VBscript sample", "Demo2"
  addMenuItem "Open script file","VBscript sample", "Demo3"
  addMenuItem "LOG Access","VBscript sample", "DemoLog"
end sub

複製檔案到以網路磁碟機連結的主機的程式如下:

const module_name  = "duplicate"         'this name must be unique !!!
const module_ver   = "0.001a"            'version

sub Init
  addMenuItem "同步到主機", "", "duplicate", "CTRL+M"
end sub

sub duplicate
  dim oEditor, sSource, sTarget, sDrive
 
  set oEditor = newEditor()           'new editor object
  oEditor.assignActiveEditor     ' 把oEditor設定成編輯中的檔案
  sSource = oEditor.fileName()   '取出檔案全名(含路徑)
  sTarget = Mid(sSource,2,99)   ' 去掉磁碟機代號
  if InStr(sSource, "\xyz\") > 0 then   ' 檔名中有\xyz\則複製到m:,否則複製到o:
    sDrive = "m"
  else
    sDrive = "o"
  end if
  sTarget = sDrive + sTarget
  oEditor.saveFileAs(sTarget)   ' 另存檔案到主機同名目錄
  msgBox(sSource + " 同步到==> " + sTarget)
  'oEditor.closeFile
  oEditor.openFile(sSource)  ' 檔名已變成主機的檔名,必須再重新開回原來檔名
end sub

程式很簡單,應該很容易看懂。PSPad script能使用的函數可由其【幫助】的"Script"查到。

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

2 個回應

  1. honshinkai表示:

    這個早就有熱鍵能實現了
    alt+ins

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *