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)

替换指定偏移范围内的文本。startend 为字符偏移量。

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)

设置选区。startend 为字符偏移量。

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) — 是否区分大小写,默认 False
  • whole_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) — 目标行号

On this page