使用程式碼片段外掛程式

程式碼片段 被預設用 EmEditor Professional 安裝。該外掛程式讓您能快速地插入單字以及短語。程式碼片段通常是讓您可以插入到文檔中的文字片段,它也可以包含一般文字,占位符,shell code,巨集,或規則運算式來轉換文字以及各種內置和使用者定義的參數。在這個程式碼片段外掛程式中,您可以創建兩種類型的項目 - 程式碼片段以及巨集。

要使用 程式碼片段 外掛程式,點擊 外掛程式 欄中的 Snippets。或在 工具 功能表下,指向 外掛程式,然后點擊 程式碼片段,便會出現 程式碼片段 自訂顯示條。

右擊程式碼片段顯示條會顯示下列選項:

插入

插入被選取的程式碼片段。

編輯

編輯被選取的程式碼片段。

選擇程式碼片段

顯示一個對話方塊,讓您能輸入一些字元來選擇要插入的程式碼片段。

新增程式碼片段

創建一個新的程式碼片段。

新增巨集

創建一個新的巨集。

新增資料夾

創建一個新的資料夾。

上移

把選取的程式碼片段在清單上往上移動。

下移

把選取的程式碼片段在清單上往下移動。

刪除

刪除被選取的程式碼片段。

刪除全部

刪除全部程式碼片段。

導入到該資料夾

把程式碼片段導入到該資料夾中。

導入到根資料夾

把程式碼片段導入到根資料夾中。

導出該資料夾/項目

導出所有在該資料夾中的程式碼片段到指定的目標中。

導出全部

導出所有程式碼片段到指定的目標中。

全部重設 (導入預設)

重設所有程式碼片段并導入預設程式碼片段清單。

觸發鍵

顯示或隱藏觸發鍵。

組態

顯示或隱藏組態。

外掛程式屬性

顯示外掛程式屬性。

名稱

按名稱排列。

類型

按類型排列。

文字

按文字排列。

提示

按提示排列。

觸發文字

按觸發文字排列。

升序

按升序排列。

降序

按降序排列。

自動排列

自動排列程式碼片段。

屬性

顯示被選取的程式碼片段或程式碼片段資料夾的屬性。

程式碼片段外掛程式屬性

要調整程式碼片段外掛程式屬性,右擊外掛程式欄中的程式碼片段外掛程式按鈕,選擇屬性。

一般頁面

自訂顯示條位置

設置自訂顯示條位置。

后臺運行

運行程式碼片段繼續運行即使您關閉了程式碼片段自訂顯示條。

預設捷徑

指定預設捷徑;初始的預設捷徑是 TAB。

詳細程度

調整提示的詳細程度。

延時

調整在一個提示出現之前的時間。

全局參數頁面

「添加」按鈕

添加一個參數并為它指定一個值。

「刪除」按鈕

刪除一個參數。

鍵盤頁面

命令

列出可用的命令。 (「快顯功能表」或「選擇程式碼片段」)

按下新的快速鍵

讓您能為選取的命令輸入快速鍵。

目前的鍵

被分配給被選取的命令的目前的鍵。

描述

對被選取的命令的說明。

「分配」按鈕

分配快速鍵給目前的被選取的命令。A

「刪除」按鈕

刪除目前的被選取的快速鍵。

程式碼片段資料夾屬性

要調整每一個程式碼片段資料夾的屬性,在程式碼片段自訂顯示條中的一個資料夾上右擊,選擇「屬性」。

一般頁面

名稱

指定程式碼片段資料夾名稱。

組態頁面

僅在啟用下列組態時使用自動完成

指定要自動完成的組態。

程式碼片段

設置要用來編輯程式碼片段的組態。

巨集

設置要用來編輯巨集的組態。

程式碼片段屬性

要調整每一個程式碼片段屬性,在程式碼片段自訂顯示條中的一個程式碼片段上右擊,選擇「屬性」。

一般頁面

名稱

指定程式碼片段資料夾名稱。

觸發文字

為程式碼片段指定觸發文字。

快速鍵

為程式碼片段指定快速鍵。

提示

為程式碼片段指定快速鍵。

類型

指定類型 (程式碼片段或巨集) 。

文字

指定程式碼片段的文字/

編輯

讓使用者能在 EmEditor 視窗中編輯程式碼片段。

組態頁面

僅在啟用下列組態時使用自動完成

指定要自動完成的組態。

程式碼片段

設置要用來編輯程式碼片段的組態。

巨集

設置要用來編輯巨集的組態。

程式碼片段語法

純文字

程式碼片段包括任何您想要插入到文檔中的純文字。要編寫純文字,大部分的字元都可以使用,然而,如果您想要包括 \,$,或 ` 到您的純文字中,它們必須被轉義為 \\,\$,以及 \`。

占位符

在您插入一個程式碼片段后,游標位置會在占位符之間跳轉,按 TAB 鍵會跳到下一個占位符。

您可以在占位符中把這些制表位定義為 ${n:default},這樣,當程式碼片段被插入時,第一次出現會是預設值。如果沒有預設值,您可以省略 {},讓制表位顯示為$n,在這里,n 的數值是一個 0 到 9 之間的整數。當一個使用者插入一個程式碼片段,最初的游標位置在 $1,按 TAB 鍵會讓 Tab前進道下一個占位符 $2,$3,... 等等。最后一個 Tab是 $0。

例如,下列的程式碼片段會在 HTML 中插入一個超連結,并且一開始的游標位置是 $1。當游標在 $1 處時,如果使用者按 TAB 鍵,游標會跳到 $2 處,然后到 $0。

$0

程式碼片段能包括預設數值。下面顯示程式碼片段用一個預設值插入一個超連結。

$0

您能在一個占位符中再包含一個占位符。下列程式碼片段用選取的目標參數插入一個超連結標籤。使用者能決定是否覆寫參數,刪除它,或再次按 TAB 鍵前進道下一個占位符處。

<a ${1: target="${2:_blank}"} href="${3:url}">$0

鏡像

如果您用相同的占位符索引,所有這些占位符的數值都會變為相同或被鏡像。下列程式碼片段插入一個 “for” 循環。在這個情況下,數值 i 是占位符 $2 的預設值,并且相同索引中的占位符被用在其他兩處地方。當游標在 ${2:i} 處時,變更 i 的數值會被鏡像到其他地方。

for( ${1:int} ${2:i} = ${3:0}; $2 != ${4:10}; $2++ ){

$0

}

轉換

您能用規則運算式和取代格式把一個占位符的數值轉換為另一個。語法是: ${n/regexp/replace_format/option} 其中

n: 該占位符的索引

regexp: 要搜尋的規則運算式

replace_format: 取代的格式

選項:

i : 忽略大小寫

g : 全局選項

下列例子除了大寫第一個字元外,把第一行上輸入的字元複製到第二行上。T

$1

${1/./\U\0/}

預設的參數:

$1 占位符 1

$2 占位符 2

$3 占位符 3

$4 占位符 4

$5 占位符 5

...

$9 占位符 9

$0 上一個占位符

${n:default} 有預設文字的占位符 n

${Path} 檔案的完整路徑名。

${Dir} 目前的檔案的目錄名稱。

${Filename} 不帶副檔名的檔案名。

${FilenameEx} 帶副檔名的檔案名。

${Ext} 檔案副檔名。

${LineText} 游標所在行。

${WordText} 游標所在單字。

${SelText} 選取的文字。

${CurCol} 游標的邏輯列號。

${CurLine} 游標的邏輯行號。

${Date} 今天的日期。

${Time} 目前的的時間。

${Charset} 字元集 (用在 HTML META 標記中) 。

${TabSize} Tab大小。

${IndentSize} 縮排大小。

${AutoIndent} 1 如果自動縮排開著,0 如果自動縮排關閉。

${UseSpacesForTabs} 1 如果 "將空白來取代 Tab" 開著,0 如果該選項被關閉。

${AppVersion} EmEditor 的版本。

${PluginVersion} 程式碼片段外掛程式的版本。

${TM_FILENAME} 與 ${FilenameEx}相同。

${TM_CURRENT_LINE} 與 ${LineText}相同。

${TM_CURRENT_WORD} 與 ${WordText}相同。

${TM_DIRECTORY} 與 ${Dir}相同。

${TM_FILEPATH} 與 ${Path}相同。

${TM_LINE_INDEX} 與 ${CurCol}相同。

${TM_LINE_NUMBER} 與 ${CurLine}相同。

${TM_SELECTED_TEXT} 與 ${SelText}相同。

${TM_SOFT_TABS} 與 ${Use與SpacesForTabs}相同。

${TM_TAB_SIZE} 與 ${TabSize}相同。

${PickFullPath,title,filter} 選取檔案的完整路徑名稱。標題是對話方塊的標題,過濾器是檔案過濾器的格式: Text files|*.txt|All files|*.*||

${PickRelativePath,title,filter} 選取檔案的相對路徑名稱。標題是對話方塊的標題,過濾器是檔案過濾器的格式: Text files|*.txt|All files|*.*||

${PickColor} 選取顏色的 RGB 值。

${DefColor} 選取顏色的 RGB 值。

您同樣能在 ${parameter_name} 的形式中創建您自己的參數,其中,parameter_name 沒有在上述清單中被預先設定。當一個新使用者參數被使用,一個對話方塊出現,讓您能插入一個新的數值,除非一個參數的值被儲存到外掛程式屬性的全局參數頁面中。

外殼程式代碼 (Shell Code)

您能定義一個能夠運行程式,然后把字串傳遞到它的標準輸入中的外殼程式代碼。控制臺應用程式的標準輸出,還有標準錯誤,會被重新導向您下一個文檔的游標位置處。一個外殼程式代碼必須由下列格式指定:

`- appname

stdin1

stdin2

...

`

如果結果字串以一個換行符 (CR,LF 或 CR+LF) 結尾,換行符會被刪除。例如下列程式碼片段會用大寫插入 ${name} 參數的內容。

`- powershell -

# prompts for name then echos the hello greeting

\$name = "${name}".ToUpper()

"Hello \$name!"

exit

`

如果您不想要分析程式碼片段參數,您可以寫:

`!- appname

stdin1

stdin2

...

`

如果您想要運行一個在命令提示符中使用的命令,您便能用 `#cmd shell_code` 格式來定義一個可以被傳遞到命令提示符視窗 (cmd.exe) 的 shell 代碼。您指定的這個值可以用 "%COMSPEC% /c shell_code" 格式被傳遞到 cmd.exe 中。標準輸出以及標準錯誤會從控制臺程式被重新導向到您的文字文檔的游標位置處。例如,下面的程式碼片段會插入到目前的的資料夾清單中。您能在每個程式碼片段中插入任意多個 shell 代碼。

`#cmd DIR`

巨集

您能用 `# ` 的格式在一個程式碼片段中包括一個巨集。第一個字元 # 表示這是一個巨集,而不是一個 shell 代碼。如果這個一個 ActiveScript 而不是 JavaScript,例如指示詞碼是 VBScript,PerlScript,PHPScript,或 RubyScript,您需要用 "#language=" 來定義語言。舉個例子,如果您想要用 VBScript,您就要寫 `#language="VBScript"...`。 Interface 對象被用來在程式碼片段和 EmEditor 巨集引擎之間傳遞值。下面的示例會在游標位置處插入剪貼簿上的內容。

剪貼簿包含 `# Interface.write( clipboardData.getData("") );`。

Interface.write() 方法會把巨集結果傳遞到程式碼片段中。您同樣能使用 Interface.writeln() 來在結果的末尾添加歸位以及換行 (CR+LF)。您能在每個程式碼片段中包括任意多個巨集。

預設值,shell 代碼或巨集內的參數

占位符預設值能包含參數,shell 代碼或一個巨集。下面的程式碼片段會在

之間插入一個

標籤,如果存在選區的話。

${0:${SelText}}

Shell 代碼和巨集能包含在它們的代碼或巨集中包含參數。下面的程式碼片段顯示了一個對話方塊,讓使用者可以輸入 ${name} 參數值來繼續。

`# var s = "${name}";

for( var i = 0; i != 5; i++ ){

Interface.writeln( s );

}

`

您要小心所有 \ 和 ` 和 $ 之前都要有一個 \。例如,下列程式碼片段插入的是 "C:\Program Files\EmEditor"。

`# Interface.writeln( "C:\\\Program Files\\\EmEditor" ); `

這是因為一個反斜杠必須被寫作 \\,并且 JavaScript 同樣會把一個反斜杠轉換為 \\。結果,一個反斜杠就轉換為四個反斜杠 (\\\\)。

如果您不想要反斜杠被轉換,并且您也不需要再一個 shell 代碼或巨集中包括任何參數,您可以在代碼的開始處標示一個感嘆號 (!)。即——在 shell 代碼中,您會寫 `!...`,在巨集中,您可以寫 `!#...`。因此,之前的例子可以被重新寫作:

`!# Interface.writeln( "C:\\Program Files\\EmEditor" ); `

提示

  • F6 鍵或 ESC 鍵來把鍵盤焦點設回到編輯器中。

  • 您可以通過右擊 外掛程式 工具列上的外掛程式按鈕,選擇 屬性,調節自訂顯示條位置。位置可以是編輯器頂部,底部,右邊或左邊。