当我在寻找相同的答案时没有找到答案时,我有点失望。谷歌也没有帮助,所以我搜索了 Lua 示例和语法,希望自己制作。我不知道 Lua,所以这也许可以以不同的方式或有效地制作,但它比我希望的更好 - 这是需要放入 SciTE 启动 Lua 脚本的 Lua 函数:
function wrap_text()
local border = 80
local t = {}
local pos = editor.SelectionStart
local sel = editor:GetSelText()
if #sel == 0 then return end
local para = {}
local function helper(line) table.insert(para, line) return "" end
helper((sel:gsub("(.-)\r?\n", helper)))
for k, v in pairs(para) do
line = ""
for token in string.gmatch(v, "[^%s]+") do
if string.len(token .. line) >= border then
t[#t + 1] = line
line = token .. " "
else
line = line .. token .. " "
end
end
t[#t + 1] = line:gsub("%s$", "")
end
editor:ReplaceSel(table.concat(t, "\n"))
editor:GotoPos(pos)
end
用法与启动脚本中的任何其他函数一样,但为了完整起见,我将从 SciTE 属性文件中粘贴我的工具定义:
command.name.8.*=Wrap Text
command.mode.8.*=subsystem:lua,savebefore:no,groupundo
command.8.*=wrap_text
command.replace.selection.8.*=2
它确实尊重段落,因此它可以用于更广泛的选择,而不仅仅是一个段落。