SciTE(Scintilla Text Editor)的内置全局变量 笔记250722
以下是 SciTE 编辑器 的完整内置变量列表,这些变量在配置文件、命令和脚本中动态引用系统与编辑器状态信息:
📂 一、文件与路径变量
| 变量 | 说明 | 示例值 |
|---|---|---|
$(FilePath) |
当前文件的完整路径 | C:\Project\main.py |
$(FileDir) |
当前文件所在目录 | C:\Project\ |
$(FileName) |
带扩展名的文件名 | main.py |
$(FileNameExt) |
同 FileName (历史兼容) |
main.py |
$(FileBaseName) |
不带扩展名的文件名 | main |
$(FileExtension) |
文件扩展名(含.) |
.py |
$(FilePattern) |
当前文件类型的通配符 | *.py |
$(CurrentSelection) |
当前选中的文本内容 | print("Hello") |
⚙️ 二、编辑器状态变量
| 变量 | 说明 | 示例值 |
|---|---|---|
$(CurrentLine) |
当前光标行号(从1开始) | 42 |
$(CurrentColumn) |
当前光标列号(从1开始) | 15 |
$(CurrentPosition) |
文档中的字节位置 | 1024 |
$(CurrentWord) |
光标下的单词 | calculate |
$(SciteSelectionStart) |
选中文本起始位置 | 500 |
$(SciteSelectionEnd) |
选中文本结束位置 | 510 |
🏠 三、环境与目录变量
| 变量 | 说明 | 示例值 |
|---|---|---|
$(SciteDefaultHome) |
SciTE 安装目录 | C:\Program Files\SciTE\ |
$(SciteUserHome) |
用户配置目录 | C:\Users\John\SciTE\ |
$(SciteDirectory) |
当前 SciTE 实例所在目录 | D:\Tools\SciTE\ |
$(HOME) |
用户主目录 | C:\Users\John\ |
$(TEMP) |
系统临时目录 | C:\Users\John\AppData\Local\Temp\ |
🌐 四、环境变量访问
properties
# 语法:$(env.VAR_NAME)
command.compile=cl "$(FilePath)" /Fe:"$(env.USERNAME)_app.exe"
| 示例 | 说明 |
|---|---|
$(env.USERPROFILE) |
Windows 用户目录 |
$(env.PATH) |
系统 PATH 环境变量 |
$(env.JAVA_HOME) |
Java 安装路径 |
$(env.OS) |
操作系统类型(Windows_NT) |
🧩 五、特殊功能变量
| 变量 | 说明 | 使用场景 |
|---|---|---|
$(1)-$(9) |
用户输入占位符 | 交互命令参数 |
$(*) |
所有用户输入 | 批量处理 |
$(?) |
弹出输入框提示 | command.test=echo "Input: $(?)" |
$(<) |
插入文件内容 | command.insert=inserttext:$(<template.txt) |
$(>>) |
追加到输出窗口 | command.log=echo "$(CurrentTime)" $(>>output.log) |
⏱️ 六、时间与随机数
properties
# 时间戳 (格式自定义)
command.timestamp=inserttext:$(Year)-$(Month)-$(Day) $(Hour):$(Minute)
| 变量 | 值示例 | 说明 |
|---|---|---|
$(Year) |
2025 | 四位年份 |
$(Month) |
07 | 两位月份 |
$(Day) |
21 | 两位日期 |
$(Hour) |
14 | 24小时制小时 |
$(Minute) |
35 | 分钟 |
$(Second) |
48 | 秒 |
$(Random) |
58392 | 随机整数 (0-65535) |
🔧 七、系统信息变量
| 变量 | 说明 | 示例值 |
|---|---|---|
$(Platform) |
操作系统架构 | Win32, x64 |
$(computername) |
计算机名 | DESKTOP-ABC123 |
$(username) |
当前用户名 | john.doe |
$(processor) |
CPU 架构 | AMD64 |
💡 八、高级用法示例
- 动态构建命令
properties
# Python 虚拟环境支持
command.go.$(file.patterns.py)=cmd /c "$(FileDir)\.venv\Scripts\python.exe" "$(FilePath)"
- 多步骤编译
properties
# C++ 编译后运行
command.build=cl /EHsc "$(FileNameExt)" /Fe:"$(FileBaseName).exe"
command.go.$(file.patterns.cpp)="$(FileBaseName).exe"
- 智能文件操作
properties
# 创建同目录的测试文件
command.mktest=saveas:$(FileDir)\test_$(FileBaseName).py
🔍 九、查看所有变量
在 SciTE 控制台(Ctrl+Shift+F8)输入:
lua
-- 打印所有内置变量
for k, v in pairs(props) do print(k..' = '..v) end
-- 查看特定变量值
print("Current file: " .. props["FilePath"])
⚠️ 注意事项
-
大小写敏感 :变量名严格区分大小写 (
$(FilePath)正确,$(filepath)错误) -
空格处理 :路径含空格时需包裹引号
propertiescommand.run="$(FileDir)\my program.exe" -
变量嵌套 :支持多层嵌套
propertiesoutput.path=$(SciteUserHome)\build\$(FileBaseName)_$(Year)$(Month)$(Day)
掌握这些变量可大幅提升 SciTE 的自动化能力,实现:
- 动态构建系统 🛠️
- 上下文感知命令 🧠
- 项目感知配置 🌐
- 智能代码生成 🤖
以下是Scite文本编辑器中的主要内置全局变量(也称为属性变量),这些变量用于配置文件(如SciTEUser.properties)和自定义命令中,实现路径引用、环境控制等功能。分类整理如下:
⚙️ 一、环境与路径变量
| 变量 | 用途说明 | 示例 |
|---|---|---|
$(SciteDefaultHome) |
Scite安装目录的绝对路径,常用于定位子目录(如/api/) |
d:/programs/wscite |
$(FilePath) |
当前打开文件的完整路径(含文件名) | C:/project/main.py |
$(FileDir) |
当前文件所在目录的路径 | C:/project/ |
$(FileName) |
当前文件的文件名(不含路径) | main.py |
$(FileExt) |
当前文件的扩展名 | .py |
$(autoit3dir) |
AutoIt3的安装目录(Scite for AutoIt专用版特有) | C:/AutoIt3 |
📂 二、文件属性与编辑状态变量
| 变量 | 用途说明 |
|---|---|
$(CurrentWord) |
光标所在位置的单词(或选中的文本) |
$(CurrentSelection) |
当前选中的文本内容 |
$(CurrentLine) |
光标所在行的行号 |
💻 三、系统与环境变量
| 变量 | 用途说明 |
|---|---|
$(OS) |
操作系统类型(如Windows) |
$(windir) |
Windows系统目录路径(如C:\Windows) |
⚡ 四、变量在命令配置中的应用
在SciTEUser.properties中,变量常用于定义外部命令(如编译、格式化),例如:
properties
# 调用Tidy格式化AutoIt代码,使用$(FilePath)传递当前文件路径
command.9.$(file.patterns.au3)="$(SciteDefaultHome)/tidy/tidy.exe" "$(FilePath)"
# 用F12快捷键将当前文件转为HTML并预览
command.41.*.au3=$(autoit3dir)/autoit3.exe $(autoit3dir)/code/htmlFormat.au3 "$(FilePath)"
⚠️ 注意事项
-
配置文件优先级 :
SciTE.properties(当前目录) >SciTEUser.properties(用户配置) >SciTEGlobal.properties(全局配置)。修改建议在
SciTEUser.properties中进行,避免重装时被覆盖。 -
路径分隔符 :
Windows系统建议使用正斜杠
/或双反斜杠\\(如d:/scite或d:\\scite)。 -
变量作用域 :
部分变量(如
$(CurrentWord))仅在运行时动态生成,不可在静态配置中直接使用。
通过合理组合这些变量,可实现高度定制的编辑环境(如语言支持、快捷键绑定)。完整变量列表可参考Scite官方文档或SciTEGlobal.properties中的注释说明。
SciTE(Scintilla Text Editor)本身并没有像编程语言(如Lua)那样的"全局变量"概念,但它的配置文件和脚本扩展功能中确实存在一些内置变量 或宏 (macro),用于动态获取编辑器状态、文件路径等信息。这些变量常用于配置文件(如 SciTEUser.properties)或 Lua 脚本中,以实现自动化操作或自定义功能。
以下是 SciTE 中常见的内置变量及其用途:
1. 文件路径相关变量
这些变量用于获取当前编辑文件的路径、名称等信息:
$(FileName):当前文件的名称(不含扩展名)。$(FileExt):当前文件的扩展名(含点号,如.txt)。$(FileBaseName):当前文件的名称(含扩展名)。$(FileDir):当前文件所在的目录路径。$(FilePath):当前文件的完整路径(包括文件名)。$(CurrentLine):当前光标所在的行号。$(CurrentColumn):当前光标所在的列号。
示例 :
在配置文件中设置保存路径时动态使用文件名:
properties
command.save=$(FileDir)\processed_$(FileName).bak
2. 环境变量
SciTE 可以调用系统环境变量,语法为 $(env.VARIABLE_NAME)。
示例:
properties
command.compile=gcc $(FilePath) -o $(env.TEMP_DIR)/output.exe
3. 编辑器状态变量
这些变量用于获取 SciTE 的当前状态:
$(SelText):当前选中的文本内容。$(SelStartLine):选中文本的起始行号。$(SelEndLine):选中文本的结束行号。$(SelStartColumn):选中文本的起始列号。$(SelEndColumn):选中文本的结束列号。
示例 :
在 Lua 脚本中获取选中内容并处理:
lua
local sel_text = sciTE.SelText
print("Selected text: " .. sel_text)
4. 配置相关变量
用于控制 SciTE 的行为或界面:
$(Home):SciTE 的安装目录路径。$(ConfigDir):用户配置文件的存储目录。$(AppData):应用程序的默认数据存储目录。
示例 :
设置自定义插件路径:
properties
plugin.path=$(Home)\plugins\custom_plugin.dll
5. Lua 脚本中的全局变量
如果使用 Lua 扩展 SciTE 的功能,可以通过 SciTE 提供的 API 访问以下全局变量:
sciTE:SciTE 的 API 对象,包含方法和属性(如sciTE.CurrentDocument、sciTE.ExecuteCommand)。SCI:Scintilla 控件的常量集合(如SCI.INDICATORFILL)。
示例 :
在 Lua 脚本中获取当前文档内容:
lua
local doc = sciTE.CurrentDocument
local content = doc:GetText()
print(content)
如何查找更多内置变量?
-
官方文档 :
SciTE 的官方文档(如 SciTE Documentation)详细列出了所有可用的变量和 API。
-
配置文件示例 :
查看 SciTE 安装目录下的
SciTEGlobal.properties或SciTEUser.properties文件,搜索$(...)格式的变量。 -
调试输出 :
在 Lua 脚本中使用
print(sciTE.Variables)可以列出所有可用的变量。
注意事项
- 变量优先级 :在配置文件中,
SciTE.properties(本地配置) >SciTEUser.properties(用户配置) >SciTEGlobal.properties(全局配置)。 - 转义字符:如果变量值包含特殊字符(如空格、引号),需用引号包裹或转义。
如果需要更具体的变量或功能说明,请进一步描述你的使用场景!
Scite文本编辑器提供了一系列内置全局变量,可在配置文件(如scite.properties)和脚本中直接使用,用于动态获取文件路径、编辑器状态等信息。以下是主要内置全局变量的分类说明:
一、文件相关变量
-
基础路径与名称
$(FilePath):当前文件的完整路径(含文件名)。$(FileName):当前文件名(含扩展名)。$(FileExt):当前文件的扩展名(如.cpp)。$(FileBasename):当前文件名(不含扩展名)。$(FileDir):当前文件所在目录路径(需通过脚本处理$(FilePath)获取)。$(FileDate):文件最后修改日期(格式依系统而定)。$(FileTime):文件最后修改时间(格式依系统而定)。
-
路径配置变量
$(SciteUserHome):用户配置目录路径(可通过环境变量自定义)。$(SciteDefaultHome):Scite默认安装目录路径(可通过环境变量自定义)。
二、编辑器状态变量
-
光标位置
$(Line):当前光标所在行号。$(Column):当前光标所在列号。$(CurrentLine):与$(Line)相同,常用于状态显示。
-
文本选择
$(SelectedText):当前选中的文本内容(需脚本或插件支持)。$(Sellength):选中内容的字符数。
-
其他状态
$(EOLMode):当前文件的行结束符模式(如LF、CRLF)。$(FileAttr):文件属性(如只读、隐藏等)。
三、环境与系统变量
-
系统信息
$(OS):操作系统类型(如Windows、Linux)。$(SciteVersion):Scite版本号。
-
临时路径
$(TempDir):系统临时目录路径(如C:\Users\Username\AppData\Local\Temp)。
四、配置文件与脚本变量
-
配置文件引用
-
$(SciteUserHome)和$(SciteDefaultHome)可用于引用用户或默认配置目录下的文件,例如:iniapi.*.cpp=$(SciteDefaultHome)/api/cpp.api ; 引用默认目录下的API文件
-
-
脚本接口
在Lua脚本中,可通过
scite对象访问更多动态信息:scite.FileName:当前文件名。scite.Line:当前行号。scite.SelectionStart:选中文本起始位置。scite.SelectionEnd:选中文本结束位置。
五、使用示例
-
配置文件中使用
在
scite.properties中设置自动保存路径:inisave.path=$(SciteUserHome)/backups/$(FileName) ; 按文件名保存到用户备份目录 -
脚本中动态处理
Lua脚本获取当前文件路径并输出:
luafunction OnOpen(filename) scite.OutputCaret = 1 ; 定位到输出窗格 scite.OutputText("当前文件路径:" .. filename) end -
命令行参数传递
通过命令行启动Scite时传入变量:
bashscite -position.left=100 -position.top=100 ; 设置初始窗口位置
六、注意事项
-
变量作用域
- 部分变量(如
$(Line))仅在编辑区生效,输出窗格中不可用。 - 脚本变量需通过
scite对象访问,与配置文件变量语法不同。
- 部分变量(如
-
平台差异
- 部分系统变量(如路径格式)在Windows和Linux下表现不同,需适配处理。
-
扩展支持
- 部分高级变量(如
$(SelectedText))可能需要安装插件或自定义脚本实现。
- 部分高级变量(如
通过合理使用这些内置变量,可显著提升Scite的自动化和定制化能力,例如快速定位文件、动态生成路径、自动化代码片段插入等。
SciTE(Scintilla Text Editor)的内置全局变量(也称为属性或预定义变量)主要用于配置文件和命令执行中动态引用路径、文件名或环境信息。这些变量以 $(...) 格式表示,可灵活适配不同上下文需求。以下是核心全局变量及其用途:
🔧 常用内置全局变量
| 变量名 | 描述 | 示例用法 |
|---|---|---|
$(SciteDefaultHome) |
SciTE 安装目录的绝对路径 | 定位全局配置文件:$(SciteDefaultHome)/SciTEGlobal.properties |
$(SciteUserHome) |
用户配置目录的路径(存储 SciTEUser.properties) |
自定义缩写文件:abbreviations.*.py=$(SciteUserHome)/py_abbrev.properties |
$(FilePath) |
当前打开文件的完整路径(含文件名和扩展名) | 编译当前文件:gcc "$(FilePath)" -o output |
$(FileDir) |
当前文件所在目录的路径 | 在文件目录打开终端:cd $(FileDir) && start cmd |
$(FileName) |
当前文件名(不含路径) | 重命名输出:javac $(FileName) -d bin |
$(FileExt) |
当前文件的扩展名(如 .py, .cpp) |
条件编译:if $(FileExt) == "cpp" g++ -O2 $(FileName) |
$(CurrentSelection) |
当前选中的文本内容 | 搜索选中词:grep -r "$(CurrentSelection)" . |
$(CurrentWord) |
光标所在位置的单词(未选中时自动提取) | 字典查询:dict $(CurrentWord) |
⚙️ 其他实用变量
- 环境变量引用 :直接使用系统环境变量,如
$(PATH)或$(HOME)。 - 自定义变量 :在配置文件中定义新变量,例如:
my.project=D:/projects,后续用$(my.project)/src引用 。 - 条件变量 :结合
if语句动态选择命令,如:
command.if.$(file.patterns.py)=python $(FileName)。
💡 主要用途
-
路径动态适配
避免硬编码路径,例如$(SciteUserHome)跨平台指向用户配置目录(Windows:%USERPROFILE%,Linux:~)。 -
自动化脚本与命令
在SciTE.properties中定义编译/运行命令:inicommand.build= g++ "$(FilePath)" -o "$(FileDir)/$(FileNameNoExt).exe" command.go= python "$(FilePath)" -
文件类型相关配置
为不同扩展名设置专用规则:inifilter.python=Python Files ($(FilePattern)) lexer.$(FileExt)=python
📖 配置优先级与继承
SciTE 加载变量的顺序为:
- 本地配置 (
SciTE.properties)→ 2. 用户配置 (SciTEUser.properties)→ 3. 全局配置 (SciTEGlobal.properties)。
高优先级配置文件中的变量会覆盖低优先级定义。
通过灵活组合这些变量,可显著提升 SciTE 的自动化能力和跨环境适应性,尤其适合开发者管理多语言项目或定制编辑流程 ✅。
SciTE(Scintilla Text Editor)通过 $(变量名) 语法 提供了一系列内置全局变量,用于在配置文件(.properties)和 Lua 脚本中动态引用文件路径、编辑器状态和系统环境。以下是核心分类与常用变量详解:
一、文件与路径变量
| 变量名 | 说明 | 示例值 |
|---|---|---|
$(FilePath) |
当前文件的绝对路径(含文件名) | C:\Project\main.py |
$(FileDir) |
当前文件所在目录 | C:\Project |
$(FileName) |
当前文件名(含扩展名) | main.py |
$(FileNameWithoutExt) |
当前文件名(不含扩展名) | main |
$(FileExt) |
当前文件的扩展名(含 .) |
.py |
$(SciteDefaultHome) |
SciTE 安装目录 | C:\Program Files\SciTE |
$(SciteUserHome) |
SciTE 用户配置目录 | %USERPROFILE%\AppData\Local\SciTE |
二、编辑器状态变量
| 变量名 | 说明 |
|---|---|
$(CurrentSelection) |
当前选中文本(未选中时为空) |
$(CurrentWord) |
光标所在位置的单词(依赖单词边界定义,可能不稳定) |
$(CurrentLine) |
当前行号(从 1 开始) |
$(CurrentColumn) |
当前列号(从 0 或 1 开始,取决于定义) |
$(SciteSelectionStart) |
选中文本的起始位置(字节索引) |
$(SciteSelectionEnd) |
选中文本的结束位置(字节索引) |
三、系统环境变量
| 变量名 | 说明 |
|---|---|
$(env.变量名) |
访问系统环境变量 |
| 示例用法 | |
$(env.PATH) |
系统 PATH 环境变量 |
$(env.JAVA_HOME) |
Java 安装路径 |
$(env.USERPROFILE) |
用户主目录(Windows) |
$(HOME) |
用户主目录(跨平台) |
$(TMP) |
系统临时目录 |
四、使用场景示例
- 在
.properties中定义命令
properties
# 运行当前 Python 文件
command.build.$(file.patterns.py)=python "$(FilePath)"
# 在资源管理器中打开当前文件所在目录
command.name.0.*=Open Folder
command.0.*=explorer "$(FileDir)"
- 在 Lua 脚本中访问变量
lua
local file = props["FilePath"] -- 获取当前文件路径
local line = tonumber(props["CurrentLine"]) -- 获取当前行号
local python_home = props["env.PYTHON_HOME"] -- 读取环境变量
-- 打印结果
print("Editing: " .. file .. " at line " .. line)
五、注意事项
-
语法差异
- 配置文件中:
$(VarName) - Lua 脚本中:
props["VarName"]
- 配置文件中:
-
转义特殊字符
路径含空格时需加引号:"$(FilePath)" -
$(CurrentWord)的可靠性问题
建议在 Lua 中用 API 替代:lualocal word = editor:GetTextRange(editor:WordStartPosition(editor.CurrentPos), editor:WordEndPosition(editor.CurrentPos)) -
动态更新
所有变量值随活动文档/编辑器状态实时变化。
完整列表请参考 SciTE 官方文档(
SciTEDocument.html)。可通过菜单栏Help > SciTE Help访问,或查看安装目录下的文档文件。
在文本编辑器领域,"scite" 通常指代两个紧密相关但又不同的东西:
- Scintilla: 这是一个功能强大的开源文本编辑组件库。许多流行的编辑器(如 Notepad++, Geany, SciTE 本身)都使用 Scintilla 作为其编辑核心。它提供了语法高亮、代码折叠、自动完成、边距标记等基础功能。
- SciTE: 这是一个基于 Scintilla 组件构建的、功能丰富的开源文本编辑器应用程序。它本身是一个完整的、可独立运行的编辑器。SciTE 以其高度可定制性(通过属性文件和 Lua 脚本)而闻名。
你提到的"内置全局变量",主要存在于 SciTE 编辑器的 Lua 脚本扩展环境中。 当你在 SciTE 中使用 Lua 脚本(通常通过 ext.lua.* 属性配置或事件处理函数如 OnOpen, OnSwitchFile, OnChar, OnSave 等)时,SciTE 会预先定义一些非常有用的全局变量和对象供你的脚本访问和操作编辑器状态。
SciTE Lua 脚本环境中的关键内置全局变量/对象:
-
props(只读):- 类型: 类似字典/表的对象
- 作用: 提供对 SciTE 所有属性 的只读访问。属性是 SciTE 配置的核心,存储在
.properties文件、环境变量或内部设置中。 - 常用属性访问:
props['FilePath']: 当前活动文档的完整路径。props['FileDir']: 当前活动文档所在的目录。props['FileName']: 当前活动文档的文件名(带扩展名)。props['FileExt']: 当前活动文档的文件扩展名(小写,不带点)。props['SciteUserHome']: SciTE 用户目录(通常存放用户特定的属性文件)。props['SciteDefaultHome']: SciTE 默认/全局目录(通常存放程序文件)。props['CurrentSelection']: 当前选中的文本(如果有的话)。- 任何你自定义或在属性文件中定义的属性,例如
props['my.custom.property']。
-
scite(对象):- 作用: 提供对 SciTE 应用程序功能的访问。这是执行操作(如打开文件、运行命令、调用菜单项)的主要接口。
- 常用方法/属性:
scite.Open(filename): 打开指定文件。scite.MenuCommand(ID): 执行一个 SciTE 菜单命令(需要知道命令 ID,如IDM_OPEN)。scite.Update(): 强制更新 UI(有时脚本修改后需要手动刷新)。scite.Output(...): 向输出窗口打印文本(调试信息)。scite.Ask(msg): 显示一个带"确定"按钮的消息框。scite.AskYesNo(msg): 显示一个带"是"/"否"按钮的对话框,返回true/false。scite.FindReplace(options): 执行查找/替换操作(参数是表,包含find,replace,flags等键)。scite.ScintillaFocus: 表示当前拥有键盘焦点的 Scintilla 窗口是主编辑区(1)还是输出区(2)。
-
editor(对象):- 作用: 提供对主编辑区域 (当前活动文档的编辑视图)底层 Scintilla 功能的直接、细粒度控制。这是操作文本、选择、样式、标记等的核心对象。它拥有大量方法(数百个)。
- 常用方法举例:
editor:AddText(text): 在光标处插入文本。editor:GetText()/editor:GetTextRange(start, end): 获取整个文档或指定范围的文本。editor:GetSelText(): 获取当前选中的文本。editor:SetSel(start, end): 设置选择范围。editor:GetCurrentPos(): 获取当前光标位置。editor:SetCurrentPos(pos): 设置光标位置。editor:ReplaceSel(text): 用text替换当前选中的文本(如果没有选中,则插入)。editor:LineFromPosition(pos): 获取包含位置pos的行号。editor:PositionFromLine(line): 获取行line的起始位置。editor:GetLine(line): 获取指定行的文本。editor:MarkerAdd(line, markerNumber): 在指定行添加标记。editor:MarkerDelete(line, markerNumber): 删除指定行的标记。editor:StyleSetFore(style, color),editor:StyleSetBack(...): 设置样式的前景色/背景色。editor:GetLength(): 获取文档总长度(字符数)。editor:GetLineCount(): 获取文档总行数。editor:TextWidth(style, text): 获取特定样式下文本的像素宽度。editor:CallTipShow(pos, tipText): 在位置pos显示一个提示框。editor:AutoCShow(lenEntered, itemList): 在光标处显示自动补全列表。
-
output(对象):- 作用: 提供对输出区域 (通常显示编译结果、查找结果等)底层 Scintilla 功能的直接控制。它的接口和方法与
editor对象完全一致 (因为都是 Scintilla 实例)。你可以使用output:AddText(...),output:ClearAll(),output:GetText()等方法来操作输出窗口的内容。 - 重要: 区分当前操作的是主编辑区 (
editor) 还是输出区 (output)。scite.ScintillaFocus可以告诉你哪个当前有焦点。
- 作用: 提供对输出区域 (通常显示编译结果、查找结果等)底层 Scintilla 功能的直接控制。它的接口和方法与
总结与关键点:
- SciTE 特定: 这些全局变量 (
props,scite,editor,output) 是 SciTE 应用程序 在其 Lua 脚本执行环境中注入的,用于扩展编辑器功能。它们不是 Scintilla 库本身的"内置变量"。 - Lua 环境: 你只能在 SciTE 的 Lua 脚本(事件处理函数、命令脚本等)中访问这些变量。
props是只读的: 你不能通过props['SomeProp'] = 'new value'直接修改属性。修改属性通常需要通过 SciTE 的 API (如scite.MenuCommand) 或在脚本中使用os.setenv(影响后续启动的子进程) 等方式间接实现,或者修改属性文件然后触发重载。editor和output是对象: 你需要使用冒号语法 (:) 来调用它们的方法 (如editor:AddText('Hello'))。scite对象是行动入口: 执行打开文件、运行命令等操作。- 文档是必备:
editor和output对象的方法直接对应 Scintilla 的底层消息/函数。要充分利用它们,查阅 Scintilla 文档 (查找以SCI_为前缀的常量名,去掉SCI_并将后续部分首字母小写通常就是 Lua 方法名,如SCI_ADDTEXT->editor:AddText()) 和 SciTE Lua 扩展文档 至关重要。
要查看这些变量和方法的实际用法,最好的方法是查阅 SciTE 的官方文档(特别是关于 Lua 脚本的部分)以及查看 SciTE 安装目录下自带的示例 Lua 脚本。
在 SciTE (Scintilla Text Editor) 中,其强大的可扩展性很大程度上依赖于 Lua 脚本 。当 SciTE 执行 Lua 脚本(通常响应特定事件或用户命令)时,它会自动向 Lua 环境注入几个关键的内置全局变量。这些变量提供了访问编辑器状态、执行操作和控制底层 Scintilla 组件的能力。
以下是 SciTE Lua 脚本环境中最重要的内置全局变量:
-
props(属性对象 - 只读)- 类型: 类似字典/表的对象。
- 作用: 提供对 SciTE 所有配置属性 的只读访问。这些属性来源于
*.properties文件、环境变量和内部设置。 - 常用属性示例:
props['FilePath']: 当前活动文档的完整路径 (e.g.,"C:\Projects\main.py")。props['FileDir']: 当前活动文档所在的目录 (e.g.,"C:\Projects")。props['FileName']: 当前活动文档的文件名 (带扩展名, e.g.,"main.py")。props['FileExt']: 当前活动文档的文件扩展名 (小写,不带点, e.g.,"py")。props['CurrentSelection']: 当前选中的文本内容 (如果没有选中则为空字符串)。props['SciteUserHome']: SciTE 用户配置目录路径。props['SciteDefaultHome']: SciTE 程序安装或全局配置目录路径。props['language']: 当前文件根据扩展名识别的语言 (e.g.,"python")。- 任何自定义或在属性文件中定义的属性 :
props['my.custom.setting']。
-
scite(SciTE 应用程序对象)- 作用: 提供对 SciTE 应用程序本身功能的访问和控制。这是执行全局操作的主要接口。
- 常用方法和属性:
scite.Open(filename): 打开指定文件。scite.MenuCommand(ID): 执行一个 SciTE 菜单命令 (需要知道命令 ID 常量,如IDM_OPEN,IDM_SAVE,IDM_PRINT)。scite.MenuCommand(IDM_OPEN)scite.Update(): 强制刷新编辑器 UI(有时修改后需要手动更新显示)。scite.Output(...): 向 输出窗口 打印文本(常用于调试或信息展示)。scite.Output('File loaded: ' .. props['FilePath'])scite.Ask(msg): 显示一个带"确定"按钮的简单消息框。scite.AskYesNo(msg): 显示一个带"是"/"否"按钮的对话框,返回true或false。scite.FindReplace(options): 执行查找或替换操作。参数是一个 Lua 表,包含键如find(查找内容),replace(替换内容),flags(标志位,控制大小写敏感、整词匹配等)。scite.ScintillaFocus: (属性) 表示当前键盘焦点所在的窗口:1表示主编辑区域 ,2表示输出区域。scite.Constant(name): 获取 SciTE 或 Scintilla 定义的常量值 (如'IDM_OPEN','SC_EOL_CRLF')。
-
editor(主编辑区域对象)- 作用: 提供对当前活动文档的主编辑区域 底层 Scintilla 功能的精细、直接控制 。这是操作文本内容、选择、样式、标记、折叠等的核心对象,拥有数百个方法。
- 常用方法示例 (使用
:语法调用):- 文本操作:
editor:AddText(text): 在光标处插入文本。editor:GetText(): 获取整个文档的文本内容。editor:GetTextRange(startPos, endPos): 获取指定文本范围内的内容。editor:GetSelText(): 获取当前选中的文本。editor:GetCurrentPos(): 获取当前光标位置(字节索引)。editor:SetCurrentPos(pos): 设置光标位置。editor:GetAnchor(): 获取选择锚点位置(选择开始处)。editor:SetSel(startPos, endPos): 设置选择范围。editor:ReplaceSel(text): 用text替换当前选中的文本(无选中则插入)。editor:ClearAll(): 清空整个文档。
- 行操作:
editor:LineFromPosition(pos): 获取包含指定位置pos的行号(从 0 开始)。editor:PositionFromLine(line): 获取指定line行首的位置。editor:GetLine(line): 获取指定line的文本内容(包含行尾符)。editor:LineLength(line): 获取指定line的长度(包含行尾符)。editor:GetLineCount(): 获取文档总行数。
- 标记 (Markers):
editor:MarkerAdd(line, markerNumber): 在指定line添加编号为markerNumber的标记。editor:MarkerDelete(line, markerNumber): 删除指定line上编号为markerNumber的标记。editor:MarkerDeleteAll(markerNumber): 删除文档中所有编号为markerNumber的标记。
- 样式 (Styling):
editor:StyleSetFore(styleNum, color): 设置样式编号styleNum的前景色(color是 RGB 数值,如0xFF0000表示红色)。editor:StyleSetBack(styleNum, color): 设置样式编号styleNum的背景色。
- 其他:
editor:GetLength(): 获取文档总长度(字符数/字节数)。editor:TextWidth(styleNum, text): 计算指定样式下文本text的像素宽度。editor:CallTipShow(pos, tipText): 在位置pos处显示一个工具提示框,内容为tipText。editor:AutoCShow(lenEntered, itemList): 在光标处显示自动补全列表。lenEntered是已输入字符数,itemList是用空格分隔的补全项字符串 (e.g.,"function class if while")。
- 文本操作:
-
output(输出区域对象)- 作用: 提供对 输出窗口区域 (通常显示编译结果、查找结果、脚本输出等)底层 Scintilla 功能的精细、直接控制。
- 接口: 该对象的方法和属性与
editor对象完全一致 !因为output本质上也是一个 Scintilla 组件实例。 - 常用方法 (与
editor相同):output:AddText(text): 向输出窗口追加文本。output:ClearAll(): 清空输出窗口内容。output:GetText(): 获取输出窗口的全部文本。output:ScrollToEnd(): 滚动输出窗口到底部(常用于追加新内容后)。output:SetSel(start, end),output:GetSelText()等操作选择。
- 关键区别: 操作的是输出窗口 的内容,而不是主编辑区域。使用
scite.ScintillaFocus可以判断焦点当前在哪个区域 (editor或output)。
关键要点总结:
- SciTE 特定: 这些变量 (
props,scite,editor,output) 是 SciTE 应用程序 在其 Lua 脚本执行上下文 中预先定义和注入的。 - 作用域: 它们仅在 SciTE 执行的 Lua 脚本中可用(例如,在
OnOpen,OnBeforeSave,OnChar,OnDoubleClick,OnKey, 用户自定义命令脚本等事件处理函数中)。 props是只读的: 不能通过props['SomeProp'] = value直接修改属性。修改属性通常需要:- 使用
scite.MenuCommand执行特定命令。 - 在脚本中修改环境变量 (
os.setenv),可能影响后续启动的子进程。 - 修改
.properties文件并触发重载 (scite.MenuCommand(IDM_RELOADPROPERTIES))。
- 使用
editor和output是对象: 必须使用冒号:语法来调用它们的方法 (e.g.,editor:AddText('Hello'),output:ClearAll())。scite是行动入口: 用于执行打开文件、运行命令、显示对话框等应用程序级操作。editor和output的 API 庞大: 它们的方法直接映射到 Scintilla 组件库的底层功能。要充分利用,必须查阅 Scintilla 文档 (查找SCI_*消息常量,通常去掉SCI_并将后续部分首字母小写即为 Lua 方法名,如SCI_ADDTEXT->editor:AddText())以及 SciTE 自带的 Lua 脚本示例和文档。
如何学习和使用:
- 查阅 SciTE 官方文档: 重点是 "Lua Scripting" 或 "Extension" 部分。
- 查看示例脚本: SciTE 安装目录下通常有
lua子目录,里面包含演示这些全局变量用法的示例脚本 (e.g.,test.lua,extman.lua)。 - 利用输出窗口调试: 使用
scite.Output(...)打印变量值和调试信息。 - 参考 Scintilla 文档: https://www.scintilla.org/ScintillaDoc.html 这是理解
editor和output对象绝大多数方法功能的终极参考。
您提到的 "scite文本编辑器" 很可能是指 SciTE(Scintilla Text Editor) ,这是一款基于 Scintilla 编辑组件的开源文本编辑器(与引文工具 Scite 无关)。SciTE 支持通过 Lua 脚本 进行功能扩展,其内置的全局变量主要集中在 Lua 执行环境中,用于访问编辑器状态、配置和内容。
以下是 SciTE 中常用的 Lua 全局变量及其用途:
核心全局变量
-
scite-
作用:主对象,提供编辑器控制 API。
-
常用方法 :
luascite.Open('文件名') -- 打开文件 scite.MenuCommand(ID) -- 执行菜单命令(如 101=新建, 102=打开) scite.UpdateUI() -- 刷新界面状态
-
-
props-
作用 :访问 SciTE 的属性系统(配置文件、全局变量)。
-
用法 :
luaprops['FileExt'] -- 当前文件扩展名(如 ".lua") props['user.name'] -- 从 SciTE 属性文件中读取的自定义属性 props['SciteDefaultHome'] -- SciTE 安装目录
-
-
editor-
作用 :控制主编辑区域(当前活动文件)。
-
常用方法 :
luaeditor:GetText() -- 获取全部文本 editor:AddText('内容') -- 插入文本 editor:ClearAll() -- 清空内容 editor:LineFromPosition(pos) -- 根据位置获取行号
-
-
output-
作用 :控制输出窗口(下方面板)。
-
用法 :
luaoutput:Clear() -- 清空输出窗口 output:AddText('日志信息\n') -- 输出信息
-
其他实用变量/函数
_G
-
Lua 的全局环境表,可遍历查看所有变量:
luafor k,v in pairs(_G) do print(k, v) end
-
print(...)- 输出内容到 输出窗口 (等价于
output:AddText(...))。
- 输出内容到 输出窗口 (等价于
-
require '模块名'- 加载 Lua 模块(如
require 'lfs'加载文件系统模块)。
- 加载 Lua 模块(如
编辑器状态变量
通过 props 或 API 动态获取:
| 属性 | 说明 |
|---|---|
props['FilePath'] |
当前文件完整路径 |
props['FileDir'] |
当前文件所在目录 |
props['CurrentSelection'] |
选中的文本内容 |
editor.Length |
文档总字符数 |
editor.CurrentPos |
当前光标位置 |
使用示例
lua
-- 打印当前文件信息
print("文件路径: " .. props['FilePath'])
print("总行数: " .. editor.LineCount)
-- 在光标处插入内容
local pos = editor.CurrentPos
editor:InsertText(pos, "INSERTED TEXT")
-- 读取自定义属性
local user = props['user.name'] or "未知用户"
scite.Output("当前用户: " .. user)
如何查看所有变量?
-
在 SciTE 中新建 Lua 脚本(如
list_vars.lua)。 -
写入以下代码并执行:
luafor k,v in pairs(_G) do print(k, type(v)) end -
在输出窗口查看所有全局变量及其类型。
注意事项:
- SciTE 的 Lua 环境在每次脚本执行时重置(非持久化)。
- 可通过
SciTEStartup.lua文件预加载全局变量或函数。 - 完整 API 参考:Scintilla 文档 + SciTE 扩展文档。
若您实际指的是 引文工具 Scite 的编辑器功能(非 SciTE),请补充说明,我会调整解答方向!
SciTE 文本编辑器的内置全局变量是预定义的占位符,可在配置文件(如 .properties)和命令中使用,用于动态引用文件路径、项目设置或环境信息。以下是一些常用的内置全局变量及其说明:
文件与路径变量
| 变量名 | 描述 |
|---|---|
$(FileName) |
当前文件的名称(不含路径和扩展名)。例如:main(若文件为 main.c)。 |
$(FileNameExt) |
当前文件的完整名称(含扩展名)。例如:main.c。 |
$(FileDir) |
当前文件的目录路径。例如:C:/projects/myproject/。 |
$(FileExt) |
当前文件的扩展名。例如:c(小写)。 |
$(FilePath) |
当前文件的完整路径。例如:C:/projects/myproject/main.c。 |
$(FileBaseName) |
当前文件所在目录的名称。例如:myproject。 |
项目与工作区变量
| 变量名 | 描述 |
|---|---|
$(ProjectName) |
当前项目的名称(通常是 .project 文件的名称)。 |
$(ProjectDir) |
当前项目文件的目录路径。 |
$(ProjectFile) |
当前项目文件的完整路径。 |
$(ActiveProject) |
当前活动项目的名称(多项目工作区中)。 |
编辑器与环境变量
| 变量名 | 描述 |
|---|---|
$(SciteDefaultHome) |
SciTE 的安装目录。例如:C:/Program Files/SciTE/。 |
$(SciteUserHome) |
用户配置目录(通常是 %APPDATA%/SciTE)。 |
$(TabWidth) |
当前设置的制表符宽度(如 4)。 |
$(IndentSize) |
当前设置的缩进大小。 |
$(LineEnding) |
当前文件的行尾符类型(\n、\r\n 等)。 |
运行时变量
| 变量名 | 描述 |
|---|---|
$(CurrentLine) |
当前光标所在的行号(从 1 开始)。 |
$(CurrentColumn) |
当前光标所在的列号(从 0 开始)。 |
$(SelectedText) |
当前选中的文本内容(可用于命令中)。 |
$(Args) |
传递给 SciTE 的命令行参数(如 scite.exe file.txt 中的 file.txt)。 |
字体与样式变量
| 变量名 | 描述 |
|---|---|
$(font.base) |
基础字体设置(如 Consolas,10)。 |
$(font.monospace) |
等宽字体设置(用于代码编辑)。 |
$(font.comment) |
注释文本的字体设置。 |
使用示例
在 SciTE 的 .properties 文件中,可使用这些变量配置编译命令或自定义操作。例如:
properties
# 编译 C 文件的命令
command.compile.*.c=gcc "$(FilePath)" -o "$(FileDir)$(FileName)"
# 运行当前 Python 文件
command.go.*.py=python "$(FilePath)"
注意事项
- 变量名区分大小写,且必须用
$(...)格式引用。 - 部分变量(如
$(SelectedText))仅在特定上下文中有效(如命令执行时)。 - 可通过
SciTEProperties对话框(菜单:Options → Open User Options File)查看所有可用变量。
如需更多变量或自定义变量,可查阅 SciTE 的官方文档或通过 PropertiesLocal 文件扩展。
SciTE文本编辑器的内置变量主要用于配置文件(如SciTEUser.properties或SciTEGlobal.properties),用于自定义编辑器行为、界面和功能。以下是常见的内置变量分类及说明,参考官方配置文档和用户实践总结:
📌 一、界面与显示控制
code.page- 设置字符编码,支持中文需配置为
936(简体中文)。 - 示例:
code.page=936
- 设置字符编码,支持中文需配置为
output.code.page- 输出窗口的字符编码,通常与
code.page一致(如936)。
- 输出窗口的字符编码,通常与
position.width和position.height- 设置窗口初始尺寸(
-1表示最大化)。
- 设置窗口初始尺寸(
line.margin.visible- 是否显示行号(
1启用,0禁用)。
- 是否显示行号(
line.margin.width- 行号栏宽度(如
3+表示默认3位数,可动态扩展)。
- 行号栏宽度(如
tabbar.hide.one- 仅打开一个文件时隐藏标签栏(
1启用)。
- 仅打开一个文件时隐藏标签栏(
⚙️ 二、编辑行为设置
tabsize- Tab键缩进的空格数(默认为
4)。
- Tab键缩进的空格数(默认为
indent.size- 自动缩进的空格数(通常与
tabsize一致)。
- 自动缩进的空格数(通常与
use.tabs- 缩进使用Tab键(
1)还是空格(0)。
- 缩进使用Tab键(
wrap- 是否启用自动换行(写代码建议关闭,设为
0)。
- 是否启用自动换行(写代码建议关闭,设为
fold- 启用代码折叠功能(
1启用)。
- 启用代码折叠功能(
📂 三、文件与操作管理
are.you.sure- 关闭未保存文件时提示(
1启用)。
- 关闭未保存文件时提示(
check.if.already.open- 检查文件是否已被其他软件打开(
1启用)。
- 检查文件是否已被其他软件打开(
open.dialog.in.file.directory- 打开文件对话框默认为当前文件目录(
1启用)。
- 打开文件对话框默认为当前文件目录(
💬 四、语言与语法支持
api.*.[ext]- 为特定语言(如Python)指定自动补全文件路径
- 示例:
api.*.py=$(SciteDefaultHome)/api/python.api。
- 示例:
- 为特定语言(如Python)指定自动补全文件路径
autocompleteword.automatic- 输入时自动弹出补全建议(
1启用)。
- 输入时自动弹出补全建议(
xml.auto.close.tags- 自动补全XML/HTML标签(
1启用)。
- 自动补全XML/HTML标签(
🔧 五、其他实用变量
| 变量 | 功能 | 示例值 |
|---|---|---|
minimize.to.tray |
最小化到系统托盘 | 1启用 |
split.vertical |
输出窗口位置(0下方,1右侧) |
0 |
error.select.line |
编译错误时定位到源代码行 | 1启用 |
caret.width |
光标宽度(1/2/3) |
2 |
⚡ 六、配置注意事项
- 作用域优先级
- 用户配置(
SciTEUser.properties) > 全局配置(SciTEGlobal.properties)。
- 用户配置(
- 动态生效
- 部分变量需重启SciTE生效(如
view.indentation.guides)。
- 部分变量需重启SciTE生效(如
- 特殊字符处理
- 正则表达式搜索需转义(如
find.replace.escapes=0禁用转义)。
- 正则表达式搜索需转义(如
完整变量列表可参考SciTE官方文档或SciTEGlobal.properties文件注释 。配置时建议仅修改SciTEUser.properties,避免全局文件变动影响稳定性。