scite 自用配置
Hugo 是一个功能强大的静态网站生成器,其核心驱动力来自于其灵活的命令行界面(CLI)。本指南旨在全面介绍 Hugo 的常用命令、标志(flags)及其用法。
配置文件
scite 的全局配置是程序目录下的SciTEGlobal.properties,
scite 的用户配置文件是在用户文件夹比如C:/User/XXX下的SciTEUser.properties。
根据其帮助文件说:
There are two environment variables, “SciTE_HOME” and “SciTE_USERHOME”, which the user may set to override the standard locations of the global and/or the user properties files (this and the following applies to Windows and GTK):
- If SciTE_USERHOME is set then it is where the user properties files are found.
- If SciTE_HOME is set then it is where the global properties files are found.
- If only SciTE_HOME is set then it is where both the global and user properties files are found.
也就是说如果需要定义用户配置的文件就要动环境变量,这相当于独立于 scite 之外需要修改系统配置,达不到便携的效果。
然而我们知道,如果用户配置不存在,scite 就会使用全局文件。
因此不得以,我们采用不创建或者删除用户配置文件SciTEUser.properties通过让 scite 直接引用SciTEGlobal.properties的方式实现便携版的配置,也就是不需要定义环境变量了。
所以打开SciTEGlobal.properties将其替换为如下内容(建立在替换前先备份文件)。
# ==============================================================================
# SciTE User Options - 终极解决版
# 核心修正:1. 窗口不再遮挡系统栏。 2. 状态栏合并为一条,不再分段。
# ==============================================================================
##### 1. 解决【窗口遮挡系统状态栏】的问题 #####
# 【核心修正】强制窗口不要最大化启动,这样 position 设置才会生效
maximised=0
# 设置一个安全的启动位置和大小,离屏幕边缘有距离
# 你可以自己修改这些数值,直到满意为止
position.left= 400
position.top= 40
position.width= 900
position.height= 1100
# 【重要】这个设置会让 SciTE 记住你手动调整后的窗口位置。
# 所以,启动后,你可以用鼠标把窗口拖到你最舒服的位置和大小,
# 然后关闭 SciTE。下次再打开,它就会在你放好的位置上。
save.position=0
# ==============================================================================
# 状态栏 - Lua 脚本驱动版
# ==============================================================================
statusbar.visible=1
statusbar.number=1
# 【核心】我们定义了一个自定义变量 $(CharCountLua)
# 这个变量的值将由我们的 Lua 脚本动态计算并提供。
# 其他变量都是可靠的,可以保留。
statusbar.text.1=行:$(LineNumber), 列:$(ColumnNumber) | 选中:$(SelLength) | 字数:$(CharCountLua) | 编码:$(EncodingLua) | 换行:$(EOLMode) | $(FilePath)
# 【重要】启用 SciTE 的脚本功能
ext.lua.startup.script=$(SciteDefaultHome)/MyScripts/SciTEUserStartup.lua
# ==============================================================================
# 以下是之前已经生效的正确配置,继续保留
# ==============================================================================
# 解决【当前行文字消失】的问题 (已修正)
caret.line.layer=0
caret.line.back=#E8F2FE
caret.line.back.alpha=255
# 编码与中文支持 (已验证)
code.page=65001
output.code.page=65001
unicode.bom=1
font.monospace=font:Consolas,size:10
# 行号 (已验证)
line.margin.visible=1
line.margin.width=5
# 其他基础设置
eol.mode=LF
tabsize=4
indent.size=4
use.tabs=0
fold=1
tabbar.visible=1
tabbar.hide.one=0
save.recent=1
save.session=1
# ==============================================================================
# 编程体验增强配置 (Add-on)
# ==============================================================================
# --- 1. 智能缩进与行为 ---
# 【核心】开启自动缩进。在你敲回车后,下一行会自动缩进到和上一行相同的位置。
indent.auto=1
# 在一行的开头按 Tab 键,会根据 indent.size (你设置的是4) 插入4个空格。
tab.indents=1
# 在一行的开头按 Backspace 键,会一次性删除4个空格的缩进。
backspace.unindents=1
# --- 2. 代码高亮与匹配增强 ---
# 当你的光标放在一个括号 ( ) { } [ ] 上时,自动高亮另一个匹配的括号。
braces.match.style=32
# 高亮括号的颜色
braces.fore=#FFFFFF
braces.back=#FF0000
# 检查括号匹配时,允许检查的范围(字符数),默认2048足够了
bracematch.slop=2048
# --- 3. 代码自动补全与提示 ---
# 【核心】在你输入3个字符后,自动弹出一个补全列表。
autocompleteword.automatic=1
# 补全列表会忽略大小写进行匹配。
autocompleteselection.caseinsensitive=1
# 如果补全列表只有一个候选项,直接帮你填上,不用再按回车。
autocomplete.choose.single=1
# 【重要】启用 CallTips (函数/方法参数提示)。当你输入函数名和左括号 `(` 时,会弹出提示。
calltips.visible=1
calltips.position=1
calltips.above.text=1
# --- 4. 其他视觉与折叠增强 ---
# 显示空白字符(空格显示为点,Tab显示为箭头),让你看清代码的真实结构。
view.whitespace=1
# 在打开文件时,默认折叠所有可折叠的代码块 (函数、类等)。
fold.on.open=1
# 折叠区域的样式,让它更紧凑
fold.compact=1
# 默认折叠的级别
fold.level=2
# --- 5. 语言 API 文件定义 (语法已修正,绝对正确) ---
# 语法: api.<语言内部名称>=$(SciteDefaultHome)\api\对应的api文件名
# 语言内部名称通常是语言名的小写形式
# 为 Python 文件 (.py) 启用
api.python=$(SciteDefaultHome)\api\python.api
# 为 C++ (.cpp, .h) 和 C (.c) 文件启用
api.cpp=$(SciteDefaultHome)\api\cpp.api
api.c=$(SciteDefaultHome)\api\c.api
# C 和 C++ 可以共用一个 api 文件
# 为 Lua 文件 (.lua) 启用
api.lua=$(SciteDefaultHome)\api\lua.api
# 为 HTML 文件 (.html, .htm) 启用
api.html=$(SciteDefaultHome)\api\html.api
# 为 CSS 文件 (.css) 启用
api.css=$(SciteDefaultHome)\api\css.api
# 为 JavaScript 文件 (.js) 启用
# 注意:JavaScript 的内部名是 script 或者 javascript
api.script=$(SciteDefaultHome)\api\js.api
api.javascript=$(SciteDefaultHome)\api\js.api
# 为 VBScript (.vbs) 启用
api.vbscript=$(SciteDefaultHome)\api\vb.api
api.vb=$(SciteDefaultHome)\api\vb.api
# 为 Windows Batch 文件 (.bat, .cmd) 启用
api.batch=$(SciteDefaultHome)\api\batch.api
# ==============================================================================
# 专业化 API 支持 (Add-on 3)
# ==============================================================================
# --- 7. 为多种 Lua 环境创建独立的语言类型 ---
# --- 标准 Lua (我们之前的配置) ---
# 这个是默认给所有 .lua 文件用的
api.lua=$(SciteDefaultHome)\api\lua.api
# --- 定义 Lua 5.3 ---
# 1. 告诉 SciTE 有个新语言叫 'lua53'
# 2. 告诉它用 'lua' 的高亮规则就行了
lexer.lua53=lua
# 3. 【核心】为这个新语言绑定专属的 API 文件
api.lua53=$(SciteDefaultHome)\api\lua53.api
# --- 定义 LuaJIT ---
lexer.luajit=lua
api.luajit=$(SciteDefaultHome)\api\luajit.api
# --- 定义 Lua C API ---
# 我们给它起个名字叫 'luac'
lexer.luac=lua
api.luac=$(SciteDefaultHome)\api\luac.api
# --- 6. 修正【编辑行沉底】的行为 ---
# 【核心】设置一个“缓冲区”或“安全距离”。
# 下面这行代码的意思是:当光标移动时,如果它离屏幕的顶部或底部边缘
# 少于 5 行,就自动滚动屏幕,以保证光标和边缘之间【至少有5行】的距离。
# 你可以把 5 改成 10 或者任何你觉得舒服的数字。
caret.policy.slop=5
# 【核心】强制执行这个策略。
# 0 = 不执行, 1 = 严格执行
# 我们必须设为 1,让它永远生效。
caret.policy.strict=1
# 【可选,但推荐】设置水平方向的安全距离(单位:像素)
# 作用同上,防止光标过于贴近左右边缘。
caret.policy.x.slop=50
# ==============================================================================
# 词法分析器增强 (Add-on 4)
# ==============================================================================
# --- 8. 升级 Python 3 语法高亮关键字 ---
# 【核心】使用 'import' 命令,告诉 SciTE 去加载我们指定的外部属性文件。
# 这个操作会覆盖掉 SciTE 内置的、可能已经过时的 Python 关键字列表。
# 因为我们把文件放在了 'props' 文件夹里,所以路径要写成 'props/...'
# SciTE 会自动在它的主目录里寻找这个路径。
# 注意:文件名不需要写 .properties 后缀。
import props/python3_keywords
配套的 Lua 文件
配套的lua文件放在程序目录的MyScripts下。下面是内容。
-- ============================================================================
-- SciTE 启动脚本:【最终进化版】
-- 1. 精确计算“有效内容”字符数 (忽略空白)
-- 2. 将编码代码页映射为人类可读的名称 (如 UTF-8, GBK)
-- ============================================================================
-- 【核心升级】创建一个编码映射表 (字典)
-- 你可以根据需要自己在这里添加更多映射
local encodingMap = {
["65001"] = "UTF-8",
["936"] = "GBK", -- 简体中文
["950"] = "Big5", -- 繁体中文
["1252"] = "ANSI", -- 西欧语言
["932"] = "Shift-JIS",-- 日文
["20127"] = "ASCII"
}
-- 函数:精确计算“有效内容”字符数 (不变)
function CountContentChars(text)
local count = 0
for char in string.gmatch(text, "([%z\1-\127\194-\244][\\128-\\191]*)") do
if not string.match(char, "%s") then
count = count + 1
end
end
return count
end
-- 【核心升级】函数:获取人类可读的文件编码名称
function GetHumanReadableEncoding()
-- 1. 获取可靠的编码代码页数字
local codePage = props['CodePage']
if not codePage or codePage == "" or codePage == "0" then
codePage = props['code.page'] -- 如果检测不到,就用默认设置
end
-- 2. 检查这个文件是否带有 BOM (Byte Order Mark)
-- props['UnicodeBOM'] 的值是 '1' (有BOM) 或 '0' (没有BOM)
local hasBOM = (props['UnicodeBOM'] == "1")
-- 3. 【智能判断逻辑】
-- 特殊处理 UTF-8,因为它有带不带 BOM 的区别
if codePage == "65001" then
if hasBOM then
return "UTF-8 (BOM)"
else
return "UTF-8"
end
end
-- 4. 对于其他编码,直接去我们的字典里查
local friendlyName = encodingMap[codePage]
if friendlyName then
return friendlyName -- 查到了,返回 GBK, Big5 之类的名字
else
-- 5. 如果字典里没有,显示原始代码页,防止什么都不显示
return "CP:" .. codePage
end
end
-- SciTE 的更新回调函数
function OnUpdateUI()
-- 1. 处理有效字符数
local text = editor:GetText()
local contentCharCount = CountContentChars(text)
props['CharCountLua'] = tostring(contentCharCount)
-- 2. 【核心升级】处理文件编码,调用我们的新函数
local humanReadableEncoding = GetHumanReadableEncoding()
props['EncodingLua'] = tostring(humanReadableEncoding)
end
其他配套文件
参考scite-files/files/api_files.md at main · moltenform/scite-files · GitHub 的记载,可以将其中需要的编程配置的 api 的文件放在程序目录下的 api 目录下。