Scite 簡單範本

lua-users home
wiki

將表格值套用至範本文字

這套適用於 Scite 的 Lua 腳本(請參閱 SciteScripts)可協助您重複使用同一個文字範本,並以表格值填入。

假設您有多行以 tab 分隔的值。每一行會分割(tab 字元)為多個值。例如:

af	Afghanistan
za	Afrique Du Sud
al	Albanie
dz	Alg�rie
de	Allemagne
//ad	Andorre
ao	Angola
ai	Anguilla
aq	Antarctique
ag	Antigua
[...]
fr	France	SELECTED
[...]
zw	Zimbabwe

現在撰寫範本(可以是多行)。它必須出現在您的值之後。例如:

<option value="<1>" <3>><2></option>

腳本會自動複製範本並使用您的值填入。非常簡單

請仔細選擇範本(由上而下),然後執行腳本。產生的文字會插入在範本之後。例如:

<option value="af" >Afghanistan</option>
<option value="za" >Afrique Du Sud</option>
<option value="al" >Albanie</option>
<option value="dz" >Alg�rie</option>
<option value="de" >Allemagne</option>
<option value="ao" >Angola</option>
<option value="ai" >Anguilla</option>
<option value="aq" >Antarctique</option>
<option value="ag" >Antigua,Et,Barbuda</option>
[...]
<option value="fr" SELECTED>France</option>
[...]
<option value="zw" >Zimbabwe</option>

如果您覺得有用,這裡有腳本:

-- we assume the template definition is the current selection
local template = editor:GetSelText()

-- now duplicate and fill the template
-- for each line before the template definition
local lastline = editor:LineFromPosition(editor.SelectionStart)-1
local res = ""
for index=0,lastline do
	local line = editor:GetLine(index)
	if string.len(line) > 2 and string.sub(line,1,2) ~= "//" then
		-- split tab separated columns
		local values = { ["<0>"] = index+1 }
		local i = 0
		for p in string.gfind(line, "[^\t\r\n]+") do
			i = i+1
			values["<"..i..">"] = p
		end
		-- fill template with values
		res = res..string.gsub(template, "(<%d+>)", function(p) return values[p] end)
	end
end

-- insert & select generated content
editor:insert(editor.SelectionEnd, res)
editor:SetSel(editor.SelectionEnd, -1)

我喜歡按 Alt+Shift+T 來執行腳本

command.name.33.*=Templatization!
command.mode.33.*=subsystem:lua,savebefore:no,groupundo
command.shortcut.33.*=Alt+Shift+T
command.33.*=dofile $(SciteDefaultHome)/lua/templatization.lua

--Philippe


最新變更 · 偏好設定
編輯 · 歷史
最後編輯時間:2006 年 8 月 31 日 下午 7:49 GMT (diff)