editor — 编辑器操作
编辑器内容、光标与选区、剪贴板、撤销重做、搜索、标签页与装饰操作。
self.editor 提供对 IDE 编辑器完整的控制能力。
所有 self.editor 方法都作用于当前活动的编辑器文档。如果需要针对任意文档(而非当前活动文档)操作,请使用 self.documents(见 documents)。
每个方法接受一个可选的 callback 回调,当请求完成(或失败)时以关键字参数的形式被调用。
文本内容
| 方法 | 说明 |
|---|---|
get_text(callback=None) | 获取编辑器当前全部内容 |
set_text(text, callback=None) | 用新内容替换编辑器全部内容 |
get_line_count(callback=None) | 获取编辑器总行数 |
get_line_text(line, callback=None) | 获取指定行的文本 |
get_selected_text(callback=None) | 获取当前选中文本 |
insert_text(text, callback=None) | 在光标位置插入文本 |
replace_range(start, end, text, callback=None) | 替换指定偏移范围的内容 |
clear(callback=None) | 清空编辑器内容 |
get_text(callback=None)
获取编辑器当前内容。
self.editor.get_text(lambda **cb: print(cb.get("text", "")))set_text(text, callback=None)
替换编辑器全部内容。
self.editor.set_text("print('hello')")参数:
text(str) — 新内容
get_line_count(callback=None)
获取编辑器总行数。
self.editor.get_line_count(lambda **cb: print(cb.get("count", 0)))get_line_text(line, callback=None)
获取指定行的文本。
self.editor.get_line_text(5, lambda **cb: print(cb.get("text", "")))参数:
line(int) — 行号
get_selected_text(callback=None)
获取当前选中的文本。
self.editor.get_selected_text(lambda **cb: print(cb.get("text", "")))insert_text(text, callback=None)
在光标位置插入文本。
self.editor.insert_text("def main():")参数:
text(str) — 要插入的文本
replace_range(start, end, text, callback=None)
替换指定偏移范围内的文本。start 与 end 为字符偏移量。
self.editor.replace_range(0, 10, "replaced")参数:
start(int) — 起始偏移量end(int) — 结束偏移量text(str) — 替换文本
clear(callback=None)
清空编辑器全部内容。
self.editor.clear()光标与选区
| 方法 | 说明 |
|---|---|
get_cursor_position(callback=None) | 获取光标位置 |
set_cursor_position(line, column, callback=None) | 设置光标位置 |
get_selection(callback=None) | 获取当前选区 |
set_selection(start, end, callback=None) | 设置选区 |
select_all(callback=None) | 全选编辑器内容 |
go_to_line(line, callback=None) | 跳转到指定行 |
get_cursor_position(callback=None)
获取光标位置。
self.editor.get_cursor_position(
lambda **cb: print(f"行 {cb.get('line')}, 列 {cb.get('column')}")
)回调数据:{"line": 1, "column": 0}
set_cursor_position(line, column, callback=None)
设置光标位置。
self.editor.set_cursor_position(10, 5)参数:
line(int) — 行号column(int) — 列号
get_selection(callback=None)
获取当前选区。
self.editor.get_selection(
lambda **cb: print(f"起始 {cb.get('start')}, 结束 {cb.get('end')}")
)回调数据:{"start": 0, "end": 10}
set_selection(start, end, callback=None)
设置选区。start 与 end 为字符偏移量。
self.editor.set_selection(0, 10)参数:
start(int) — 选区起始偏移量end(int) — 选区结束偏移量
select_all(callback=None)
选中编辑器全部内容。
self.editor.select_all()go_to_line(line, callback=None)
跳转到指定行。
self.editor.go_to_line(42)参数:
line(int) — 目标行号
剪贴板
| 方法 | 说明 |
|---|---|
copy(callback=None) | 复制选中文本到剪贴板 |
cut(callback=None) | 剪切选中文本 |
paste(callback=None) | 粘贴剪贴板内容到光标位置 |
copy(callback=None)
复制选中文本到剪贴板。
self.editor.copy()cut(callback=None)
剪切选中文本(复制并删除)。
self.editor.cut()paste(callback=None)
在光标位置粘贴剪贴板内容。
self.editor.paste()撤销与重做
| 方法 | 说明 |
|---|---|
undo(callback=None) | 撤销最近一次操作 |
redo(callback=None) | 重做最近一次撤销 |
can_undo(callback=None) | 检查当前是否可以撤销 |
can_redo(callback=None) | 检查当前是否可以重做 |
undo(callback=None)
撤销最近一次操作。
self.editor.undo()redo(callback=None)
重做最近一次被撤销的操作。
self.editor.redo()can_undo(callback=None)
检查当前是否可以撤销。
self.editor.can_undo(lambda **cb: print(cb.get("can_undo", False)))can_redo(callback=None)
检查当前是否可以重做。
self.editor.can_redo(lambda **cb: print(cb.get("can_redo", False)))查找
| 方法 | 说明 |
|---|---|
find(word, match_case=False, whole_word=False, callback=None) | 在编辑器中搜索文本 |
find_regex(pattern, callback=None) | 使用正则表达式搜索 |
clear_search(callback=None) | 清除搜索高亮与状态 |
find(word, match_case=False, whole_word=False, callback=None)
在编辑器中搜索文本。
self.editor.find("TODO", match_case=True, whole_word=True)参数:
word(str) — 搜索文本match_case(bool) — 是否区分大小写,默认Falsewhole_word(bool) — 是否全词匹配,默认False
find_regex(pattern, callback=None)
使用正则表达式搜索。
self.editor.find_regex(r"def \w+\(")参数:
pattern(str) — 正则表达式
clear_search(callback=None)
清除当前的搜索高亮与搜索状态。
self.editor.clear_search()标签页
| 方法 | 说明 |
|---|---|
open_file(path, callback=None) | 在编辑器中打开文件 |
close_tab(path, callback=None) | 关闭指定路径的标签页 |
get_current_tab(callback=None) | 获取当前活动标签页 |
list_tabs(callback=None) | 列出所有打开的标签页 |
open_file(path, callback=None)
在编辑器中打开文件并切换为活动标签页。
self.editor.open_file("/path/to/file.py")参数:
path(str) — 文件路径
close_tab(path, callback=None)
关闭指定路径的标签页。
self.editor.close_tab("/path/to/file.py")参数:
path(str) — 文件路径
get_current_tab(callback=None)
获取当前活动标签页信息。
self.editor.get_current_tab(lambda **cb: print(cb))list_tabs(callback=None)
列出所有已打开的标签页。
self.editor.list_tabs(lambda **cb: print(cb))装饰
| 方法 | 说明 |
|---|---|
set_ghost_text(text, line, column, callback=None) | 在指定位置设置幽灵文本(内联提示) |
clear_ghost_text(callback=None) | 清除幽灵文本 |
scroll_to_line(line, callback=None) | 滚动到指定行 |
set_ghost_text(text, line, column, callback=None)
在指定位置设置幽灵文本,用于显示内联建议。
self.editor.set_ghost_text("suggestion", 10, 5)参数:
text(str) — 提示文本line(int) — 行号column(int) — 列号
clear_ghost_text(callback=None)
清除当前显示的幽灵文本。
self.editor.clear_ghost_text()scroll_to_line(line, callback=None)
将编辑器滚动到指定行。
self.editor.scroll_to_line(42)参数:
line(int) — 目标行号