TextEdit
继承: Control < CanvasItem < Node < Object
派生: CodeEdit
多行文本编辑器。
描述
多行文本编辑器。它还有少量用于编辑代码的功能,例如语法高亮支持。更多针对编辑代码的高阶功能见 CodeEdit。
注意:大多数视口、光标和编辑方法都包含 caret_index
参数以支持 caret_multiple。该参数应为以下之一:-1
用于所有光标,0
用于主光标,大于 0
按照其创建顺序用于辅助光标。
注意:当按住 Alt 时,垂直滚轮的滚动速度将是正常速度的 5 倍。这也适用于 Godot 脚本编辑器。
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
clip_contents |
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
focus_mode |
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
mouse_default_cursor_shape |
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
void | _backspace(caret_index: int) virtual |
void | |
void | |
void | _handle_unicode_input(unicode_char: int, caret_index: int) virtual |
void | |
void | _paste_primary_clipboard(caret_index: int) virtual |
void | add_caret_at_carets(below: bool) |
void | add_gutter(at: int = -1) |
void | |
void | adjust_carets_after_edit(caret: int, from_line: int, from_col: int, to_line: int, to_col: int) |
void | adjust_viewport_to_caret(caret_index: int = 0) |
void | |
void | |
void | |
void | |
void | |
void | center_viewport_to_caret(caret_index: int = 0) |
void | clear() |
void | |
void | collapse_carets(from_line: int, from_column: int, to_line: int, to_column: int, inclusive: bool = false) |
void | |
void | |
void | delete_selection(caret_index: int = -1) |
void | |
void | |
void | |
void | |
get_caret_column(caret_index: int = 0) const | |
get_caret_count() const | |
get_caret_draw_pos(caret_index: int = 0) const | |
get_caret_line(caret_index: int = 0) const | |
get_caret_wrap_index(caret_index: int = 0) const | |
get_first_non_whitespace_column(line: int) const | |
get_first_visible_line() const | |
get_gutter_count() const | |
get_gutter_name(gutter: int) const | |
get_gutter_type(gutter: int) const | |
get_gutter_width(gutter: int) const | |
get_h_scroll_bar() const | |
get_indent_level(line: int) const | |
get_last_full_visible_line() const | |
get_last_unhidden_line() const | |
get_line_background_color(line: int) const | |
get_line_column_at_pos(position: Vector2i, allow_out_of_bounds: bool = true) const | |
get_line_count() const | |
get_line_gutter_icon(line: int, gutter: int) const | |
get_line_gutter_item_color(line: int, gutter: int) const | |
get_line_gutter_metadata(line: int, gutter: int) const | |
get_line_gutter_text(line: int, gutter: int) const | |
get_line_height() const | |
get_line_ranges_from_carets(only_selections: bool = false, merge_adjacent: bool = true) const | |
get_line_width(line: int, wrap_index: int = -1) const | |
get_line_wrap_count(line: int) const | |
get_line_wrap_index_at_column(line: int, column: int) const | |
get_line_wrapped_text(line: int) const | |
get_local_mouse_pos() const | |
get_menu() const | |
get_minimap_line_at_pos(position: Vector2i) const | |
get_minimap_visible_lines() const | |
get_next_visible_line_index_offset_from(line: int, wrap_index: int, visible_amount: int) const | |
get_next_visible_line_offset_from(line: int, visible_amount: int) const | |
get_pos_at_line_column(line: int, column: int) const | |
get_rect_at_line_column(line: int, column: int) const | |
get_saved_version() const | |
get_scroll_pos_for_line(line: int, wrap_index: int = 0) const | |
get_selected_text(caret_index: int = -1) | |
get_selection_at_line_column(line: int, column: int, include_edges: bool = true, only_selections: bool = true) const | |
get_selection_column(caret_index: int = 0) const | |
get_selection_from_column(caret_index: int = 0) const | |
get_selection_from_line(caret_index: int = 0) const | |
get_selection_line(caret_index: int = 0) const | |
get_selection_mode() const | |
get_selection_origin_column(caret_index: int = 0) const | |
get_selection_origin_line(caret_index: int = 0) const | |
get_selection_to_column(caret_index: int = 0) const | |
get_selection_to_line(caret_index: int = 0) const | |
get_sorted_carets(include_ignored_carets: bool = false) const | |
get_tab_size() const | |
get_total_gutter_width() const | |
get_total_visible_line_count() const | |
get_v_scroll_bar() const | |
get_version() const | |
get_visible_line_count() const | |
get_visible_line_count_in_range(from_line: int, to_line: int) const | |
get_word_at_pos(position: Vector2) const | |
get_word_under_caret(caret_index: int = -1) const | |
has_ime_text() const | |
has_redo() const | |
has_selection(caret_index: int = -1) const | |
has_undo() const | |
void | insert_line_at(line: int, text: String) |
void | insert_text(text: String, line: int, column: int, before_selection_begin: bool = true, before_selection_end: bool = false) |
void | insert_text_at_caret(text: String, caret_index: int = -1) |
is_caret_after_selection_origin(caret_index: int = 0) const | |
is_caret_visible(caret_index: int = 0) const | |
is_dragging_cursor() const | |
is_gutter_clickable(gutter: int) const | |
is_gutter_drawn(gutter: int) const | |
is_gutter_overwritable(gutter: int) const | |
is_in_mulitcaret_edit() const | |
is_line_gutter_clickable(line: int, gutter: int) const | |
is_line_wrapped(line: int) const | |
is_menu_visible() const | |
is_mouse_over_selection(edges: bool, caret_index: int = -1) const | |
is_overtype_mode_enabled() const | |
void | menu_option(option: int) |
void | merge_gutters(from_line: int, to_line: int) |
void | |
multicaret_edit_ignore_caret(caret_index: int) const | |
void | |
void | paste_primary_clipboard(caret_index: int = -1) |
void | redo() |
void | remove_caret(caret: int) |
void | remove_gutter(gutter: int) |
void | remove_line_at(line: int, move_carets_down: bool = true) |
void | |
void | remove_text(from_line: int, from_column: int, to_line: int, to_column: int) |
search(text: String, flags: int, from_line: int, from_column: int) const | |
void | select(origin_line: int, origin_column: int, caret_line: int, caret_column: int, caret_index: int = 0) |
void | |
void | select_word_under_caret(caret_index: int = -1) |
void | set_caret_column(column: int, adjust_viewport: bool = true, caret_index: int = 0) |
void | set_caret_line(line: int, adjust_viewport: bool = true, can_be_hidden: bool = true, wrap_index: int = 0, caret_index: int = 0) |
void | set_gutter_clickable(gutter: int, clickable: bool) |
void | set_gutter_custom_draw(column: int, draw_callback: Callable) |
void | set_gutter_draw(gutter: int, draw: bool) |
void | set_gutter_name(gutter: int, name: String) |
void | set_gutter_overwritable(gutter: int, overwritable: bool) |
void | set_gutter_type(gutter: int, type: GutterType) |
void | set_gutter_width(gutter: int, width: int) |
void | |
void | set_line_as_center_visible(line: int, wrap_index: int = 0) |
void | set_line_as_first_visible(line: int, wrap_index: int = 0) |
void | set_line_as_last_visible(line: int, wrap_index: int = 0) |
void | set_line_background_color(line: int, color: Color) |
void | set_line_gutter_clickable(line: int, gutter: int, clickable: bool) |
void | set_line_gutter_icon(line: int, gutter: int, icon: Texture2D) |
void | set_line_gutter_item_color(line: int, gutter: int, color: Color) |
void | set_line_gutter_metadata(line: int, gutter: int, metadata: Variant) |
void | set_line_gutter_text(line: int, gutter: int, text: String) |
void | set_overtype_mode_enabled(enabled: bool) |
void | set_search_flags(flags: int) |
void | set_search_text(search_text: String) |
void | set_selection_mode(mode: SelectionMode) |
void | set_selection_origin_column(column: int, caret_index: int = 0) |
void | set_selection_origin_line(line: int, can_be_hidden: bool = true, wrap_index: int = -1, caret_index: int = 0) |
void | set_tab_size(size: int) |
void | set_tooltip_request_func(callback: Callable) |
void | |
void | start_action(action: EditAction) |
void | swap_lines(from_line: int, to_line: int) |
void | |
void | undo() |
主题属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
信号
caret_changed() 🔗
当任何光标改变位置时发出。
gutter_added() 🔗
添加边栏时发出。
gutter_clicked(line: int, gutter: int) 🔗
点击边栏时发出。
gutter_removed() 🔗
移除边栏时发出。
lines_edited_from(from_line: int, to_line: int) 🔗
文本改变时立即发出。
添加文本时 from_line
小于 to_line
。移除文本时 to_line
小于 from_line
。
text_changed() 🔗
当文本更改时触发。
text_set() 🔗
枚举
enum MenuItems: 🔗
MenuItems MENU_CUT = 0
剪切(复制并删除)选中的文本。
MenuItems MENU_COPY = 1
复制选中的文本。
MenuItems MENU_PASTE = 2
将剪贴板上的文本粘贴在选定的文本上(或光标的位置)。
MenuItems MENU_CLEAR = 3
擦除整个 TextEdit 文本。
MenuItems MENU_SELECT_ALL = 4
选择整个 TextEdit 文本。
MenuItems MENU_UNDO = 5
撤销之前的操作。
MenuItems MENU_REDO = 6
重做前一个动作。
MenuItems MENU_SUBMENU_TEXT_DIR = 7
“文本书写方向”子菜单的 ID。
MenuItems MENU_DIR_INHERITED = 8
将文本方向设置为继承。
MenuItems MENU_DIR_AUTO = 9
将文本方向设置为自动。
MenuItems MENU_DIR_LTR = 10
将文本方向设置为从左至右。
MenuItems MENU_DIR_RTL = 11
将文本方向设置为从右至左。
MenuItems MENU_DISPLAY_UCC = 12
切换控制字符的显示。
MenuItems MENU_SUBMENU_INSERT_UCC = 13
“插入控制字符”子菜单的 ID。
MenuItems MENU_INSERT_LRM = 14
插入从左至右标志(LRM)字符。
MenuItems MENU_INSERT_RLM = 15
插入从右至左标志(LRM)字符。
MenuItems MENU_INSERT_LRE = 16
插入开始从左至右嵌入(LRE)字符。
MenuItems MENU_INSERT_RLE = 17
插入开始从右至左嵌入(RLE)字符。
MenuItems MENU_INSERT_LRO = 18
插入开始从左至右强制(LRO)字符。
MenuItems MENU_INSERT_RLO = 19
插入开始从右至左嵌入(RLE)字符。
MenuItems MENU_INSERT_PDF = 20
插入退出方向格式化(PDF)字符。
MenuItems MENU_INSERT_ALM = 21
插入阿拉伯字母标记(ALM)字符。
MenuItems MENU_INSERT_LRI = 22
插入从左至右隔离(LRI)字符。
MenuItems MENU_INSERT_RLI = 23
插入从右至左隔离(RLI)字符。
MenuItems MENU_INSERT_FSI = 24
插入第一个强隔离(FSI)字符。
MenuItems MENU_INSERT_PDI = 25
插入退出方向隔离(PDI)字符。
MenuItems MENU_INSERT_ZWJ = 26
插入零宽连接符(ZWJ)字符。
MenuItems MENU_INSERT_ZWNJ = 27
插入零宽非连接符(ZWNJ)字符。
MenuItems MENU_INSERT_WJ = 28
插入文字连接符(WJ)字符。
MenuItems MENU_INSERT_SHY = 29
插入软连字符(SHY)字符。
MenuItems MENU_MAX = 30
代表 MenuItems 枚举的大小。
enum EditAction: 🔗
EditAction ACTION_NONE = 0
无当前动作。
EditAction ACTION_TYPING = 1
打字动作。
EditAction ACTION_BACKSPACE = 2
向后删除动作。
EditAction ACTION_DELETE = 3
向前删除动作。
enum SearchFlags: 🔗
SearchFlags SEARCH_MATCH_CASE = 1
搜索时匹配大小写。
SearchFlags SEARCH_WHOLE_WORDS = 2
搜索时匹配整个单词。
SearchFlags SEARCH_BACKWARDS = 4
从头到尾搜索。
enum CaretType: 🔗
CaretType CARET_TYPE_LINE = 0
垂直线光标。
CaretType CARET_TYPE_BLOCK = 1
方块光标。
enum SelectionMode: 🔗
SelectionMode SELECTION_MODE_NONE = 0
不选择。
SelectionMode SELECTION_MODE_SHIFT = 1
就像按下 shift
一样进行选择。
SelectionMode SELECTION_MODE_POINTER = 2
选择单个字符,就像用户单击一样。
SelectionMode SELECTION_MODE_WORD = 3
选择整个单词,就像用户双击一样。
SelectionMode SELECTION_MODE_LINE = 4
选择整行文本,就像用户三击一样。
enum LineWrappingMode: 🔗
LineWrappingMode LINE_WRAPPING_NONE = 0
换行被禁用。
LineWrappingMode LINE_WRAPPING_BOUNDARY = 1
换行发生在控件边界,超出通常可见的范围。
enum GutterType: 🔗
GutterType GUTTER_TYPE_STRING = 0
当使用 set_gutter_type 将边栏设置为字符串时,它被用于包含通过 set_line_gutter_text 方法设置的文本。
GutterType GUTTER_TYPE_ICON = 1
当使用 set_gutter_type 将边栏设置为图标时,它被用于包含通过 set_line_gutter_icon 方法设置的图标。
GutterType GUTTER_TYPE_CUSTOM = 2
当使用 set_gutter_type 将边栏设置为自定义时,它被用于包含由通过 set_gutter_custom_draw 方法设置的回调方法控制的自定义视觉效果。
属性说明
AutowrapMode autowrap_mode = 3
🔗
void set_autowrap_mode(value: AutowrapMode)
AutowrapMode get_autowrap_mode()
如果 wrap_mode 设置为 LINE_WRAPPING_BOUNDARY,则设置文本换行模式。不同模式的行为见 AutowrapMode。
如果为 true
,则文本光标会闪烁。
float caret_blink_interval = 0.65
🔗
文本光标的闪烁间隔(单位为秒)。
bool caret_draw_when_editable_disabled = false
🔗
void set_draw_caret_when_editable_disabled(value: bool)
bool is_drawing_caret_when_editable_disabled()
如果为 true
,则禁用 editable 时光标可见。
bool caret_mid_grapheme = false
🔗
允许在单个复合字符的组件中进行移动光标、选中、删除的操作。
注意:退格键 Backspace 始终按复合字符的组件删除。
bool caret_move_on_right_click = true
🔗
如果为 true
,则单击右键时会先将文本光标移动到鼠标位置,然后再显示上下文菜单。
如果为 false
,则上下文菜单将忽略鼠标位置。
设置是否允许使用多个文本光标。
设置要绘制的文本光标的类型。
bool context_menu_enabled = true
🔗
为 true
时右键单击会显示上下文菜单。
String custom_word_separators = ""
🔗
The characters to consider as word delimiters if use_custom_word_separators is true
. The characters should be defined without separation, for example #_!
.
bool deselect_on_focus_loss_enabled = true
🔗
如果为 true
,则在丢失焦点时会取消选中文本。
bool drag_and_drop_selection_enabled = true
🔗
如果为 true
,则允许拖放选中的文本。文本仍可从其他来源拖放。
bool draw_control_chars = false
🔗
如果为 true
,则会显示控制字符。
如果为 true
,“空格”字符将具有可见表示形式。
如果为 true
,“制表符”字符将具有可见表示形式。
如果为 false
,则不能修改现在的文本,也不能添加新文本。
bool highlight_all_occurrences = false
🔗
如果为 true
,所选文本的所有匹配项都将突出显示。
bool highlight_current_line = false
🔗
如果为 true
,则包含光标的行会突出显示。
bool indent_wrapped_lines = false
🔗
如果为 true
,则所有换行的行都会缩进,缩进量与展开的行相同。
语言代码,用于断行和文本塑形算法,如果留空则使用当前区域设置。
bool middle_mouse_paste_enabled = true
🔗
如果为 false
,将禁用鼠标中键粘贴剪贴板。
注意:这个方法只在 Linux 上实现。
如果为 true
,则显示小地图,提供源代码的概要。小地图使用固定宽度的文本大小。
小地图的宽度(以像素为单位)。
String placeholder_text = ""
🔗
TextEdit 为空时显示的文本。它不是 TextEdit 的默认值(参见 text)。
bool scroll_fit_content_height = false
🔗
如果为 true
,则 TextEdit 将禁用垂直滚动,并将最小高度与可见行数相匹配。
如果有一个水平滚动条,这决定了当前的水平滚动值,单位是像素。
bool scroll_past_end_of_file = false
🔗
允许滚动过最后一行,进入“虚拟”空间。
在文本上平滑滚动,而不是跳到下一个位置。
float scroll_v_scroll_speed = 80.0
🔗
设置使用小地图或当 scroll_smooth 被启用时的滚动速度。
如果有一个垂直滚动条,这就决定了当前的垂直滚动值,以行数为单位,顶行从0开始。
bool selecting_enabled = true
🔗
如果为 true
,文本可以被选择。
如果为 false
,用户或使用select或select_all方法都不能选择文本。
bool shortcut_keys_enabled = true
🔗
为 true
时,即使上下文菜单已被禁用,也会启用该上下文菜单的快捷键。
StructuredTextParser structured_text_bidi_override = 0
🔗
void set_structured_text_bidi_override(value: StructuredTextParser)
StructuredTextParser get_structured_text_bidi_override()
为结构化文本设置 BiDi 算法覆盖。
Array structured_text_bidi_override_options = []
🔗
void set_structured_text_bidi_override_options(value: Array)
Array get_structured_text_bidi_override_options()
设置 BiDi 覆盖的附加选项。
SyntaxHighlighter syntax_highlighter 🔗
void set_syntax_highlighter(value: SyntaxHighlighter)
SyntaxHighlighter get_syntax_highlighter()
设置要使用的 SyntaxHighlighter。
TextEdit 的字符串值。
TextDirection text_direction = 0
🔗
void set_text_direction(value: TextDirection)
TextDirection get_text_direction()
基础文本书写方向。
bool use_custom_word_separators = false
🔗
If false
, using Ctrl + Left or Ctrl + Right (Cmd + Left or Cmd + Right on macOS) bindings will use the behavior of use_default_word_separators. If true
, it will also stop the caret if a character within custom_word_separators is detected. Useful for subword moving. This behavior also will be applied to the behavior of text selection.
bool use_default_word_separators = true
🔗
If false
, using Ctrl + Left or Ctrl + Right (Cmd + Left or Cmd + Right on macOS) bindings will stop moving caret only if a space or punctuation is detected. If true
, it will also stop the caret if a character is part of !"#$%&'()*+,-./:;<=>?@[\]^`{|}~
, the Unicode General Punctuation table, or the Unicode CJK Punctuation table. Useful for subword moving. This behavior also will be applied to the behavior of text selection.
bool virtual_keyboard_enabled = true
🔗
如果为 true
,则在获得焦点时会在支持的平台上显示原生虚拟键盘。
LineWrappingMode wrap_mode = 0
🔗
void set_line_wrapping_mode(value: LineWrappingMode)
LineWrappingMode get_line_wrapping_mode()
设置要使用的换行模式。
方法说明
void _backspace(caret_index: int) virtual 🔗
覆盖此方法可以定义用户按下退格键时应该发生什么。
void _copy(caret_index: int) virtual 🔗
覆盖此方法可以定义用户执行复制操作时应该发生什么。
void _cut(caret_index: int) virtual 🔗
覆盖此方法可以定义用户执行剪切操作时应该发生什么。
void _handle_unicode_input(unicode_char: int, caret_index: int) virtual 🔗
覆盖此方法可以定义用户打出所提供的键 unicode_char
时应该发生什么。
void _paste(caret_index: int) virtual 🔗
覆盖此方法可以定义用户执行粘贴操作时应该发生什么。
void _paste_primary_clipboard(caret_index: int) virtual 🔗
覆盖此方法可以定义用户使用鼠标中键执行粘贴操作时应该发生什么。
注意:此方法仅在 Linux 上实现。
int add_caret(line: int, column: int) 🔗
在给定的位置添加新的光标。返回新光标的索引,如果位置无效则返回 -1
。
void add_caret_at_carets(below: bool) 🔗
在每个光标上方或下方添加一个额外的光标。如果 below
为 true
,则会在下方添加新光标,否则为上方。
void add_gutter(at: int = -1) 🔗
为这个 TextEdit 注册一个新的边栏。请使用 at
指定边栏的顺序。-1
会将该边栏追加到右侧。
void add_selection_for_next_occurrence() 🔗
选中当前所选内容下一次出现的位置并添加文本光标。如果没有活动的选中内容,则选中当前光标所处的单词。
void adjust_carets_after_edit(caret: int, from_line: int, from_col: int, to_line: int, to_col: int) 🔗
已弃用: No longer necessary since methods now adjust carets themselves.
这个方法什么也不做。
void adjust_viewport_to_caret(caret_index: int = 0) 🔗
调整视口,让光标可见。
void apply_ime() 🔗
为所有光标应用输入法编辑器中的文本,如果输入法编辑器处于打开状态,还会将其关闭。
void backspace(caret_index: int = -1) 🔗
用户按下退格键时调用。可以用 _backspace 覆盖。
void begin_complex_operation() 🔗
开始一个多部分编辑。在调用 end_complex_operation 之前,所有编辑都将被视为一个动作。
void begin_multicaret_edit() 🔗
开始对多个光标进行编辑。编辑必须以 end_multicaret_edit 结束。多光标编辑可用于编辑多个光标处的文本,并将光标的合并延迟到末尾,因此光标索引不会立即受到影响。begin_multicaret_edit 和 end_multicaret_edit 可以嵌套,并且合并将发生在最后一个 end_multicaret_edit。
示例用法:
begin_complex_operation()
begin_multicaret_edit()
for i in range(get_caret_count()):
if multicaret_edit_ignore_caret(i):
continue
# 逻辑在这里。
end_multicaret_edit()
end_complex_operation()
void cancel_ime() 🔗
如果输入法编辑器处于打开状态,则会将其关闭。输入法编辑器中的文本会丢失。
void center_viewport_to_caret(caret_index: int = 0) 🔗
将视口居中在正在编辑的插入符号所在的行上。这也将 scroll_horizontal 值重置为 0
。
void clear() 🔗
执行对 TextEdit 的完全重置,包括撤消历史。
void clear_undo_history() 🔗
清除撤销历史。
void collapse_carets(from_line: int, from_column: int, to_line: int, to_column: int, inclusive: bool = false) 🔗
将给定范围内的所有光标折叠到 from_line
和 from_column
位置。
inclusive
应用于两端。
如果 is_in_mulitcaret_edit 为 true
,则折叠的光标对于 multicaret_edit_ignore_caret 将为 true
。
如果任何光标被折叠,将调用 merge_overlapping_carets.
void copy(caret_index: int = -1) 🔗
复制当前选区。可以使用 _copy 覆盖。
void cut(caret_index: int = -1) 🔗
剪切当前选区。可以使用 _cut 覆盖。
void delete_selection(caret_index: int = -1) 🔗
删除选定的文本。
void deselect(caret_index: int = -1) 🔗
取消当前选择。
void end_action() 🔗
标记在 start_action 开始的当前动作中步骤的末尾。
void end_complex_operation() 🔗
结束一个多部分编辑,该多部分编辑从 begin_complex_operation 开始。如果在一个复杂动作之外调用,则将当前动作将被压入撤消/重做堆栈。
void end_multicaret_edit() 🔗
结束以 begin_multicaret_edit 开始的多个光标的编辑。如果这是最后一个 end_multicaret_edit,并且调用了 merge_overlapping_carets,则光标将被合并。
int get_caret_column(caret_index: int = 0) const 🔗
返回编辑光标所在的列。
返回该 TextEdit 中的光标数。
Vector2 get_caret_draw_pos(caret_index: int = 0) const 🔗
返回光标的像素绘制位置。
PackedInt32Array get_caret_index_edit_order() 🔗
已弃用: Carets no longer need to be edited in any specific order. If the carets need to be sorted, use get_sorted_carets instead.
返回文本光标索引的列表,使用编辑顺序,从下到上进行。编辑顺序是 insert_text_at_caret 等动作的应用顺序。
int get_caret_line(caret_index: int = 0) const 🔗
返回编辑光标所在的行。
int get_caret_wrap_index(caret_index: int = 0) const 🔗
返回正编辑的文本光标所在的换行索引。
int get_first_non_whitespace_column(line: int) const 🔗
返回第一个非空白字符列。
int get_first_visible_line() const 🔗
返回第一个可见行。
int get_gutter_count() const 🔗
返回注册的边栏数量。
String get_gutter_name(gutter: int) const 🔗
返回给定索引处边栏的名称。
GutterType get_gutter_type(gutter: int) const 🔗
返回给定索引处的边栏的类型。边栏可以包含图标、文本或自定义视觉效果。选项见 GutterType。
int get_gutter_width(gutter: int) const 🔗
返回给定索引处边栏的宽度。
HScrollBar get_h_scroll_bar() const 🔗
设置该 TextEdit 所使用的 HScrollBar。
int get_indent_level(line: int) const 🔗
返回第一个字符前的空格和 tab * tab_size
数。
int get_last_full_visible_line() const 🔗
返回最后一个可见的行。获得换行索引的话,使用 get_last_full_visible_line_wrap_index。
int get_last_full_visible_line_wrap_index() const 🔗
返回最后一个可见行的最后一个可见换行索引。
int get_last_unhidden_line() const 🔗
返回整个 TextEdit 中最后一个未隐藏的行。
String get_line(line: int) const 🔗
返回特定行的文本。
Color get_line_background_color(line: int) const 🔗
返回该行的当前背景色。如果没有设置颜色,则返回 Color(0, 0, 0, 0)
。
Vector2i get_line_column_at_pos(position: Vector2i, allow_out_of_bounds: bool = true) const 🔗
返回给定位置的行和列。在返回的向量中,x
是列,y
是行。如果 allow_out_of_bounds
为 false
,且该位置不在文本上方,则两个向量值都将被设置为 -1
。
返回文本中的行数。
Texture2D get_line_gutter_icon(line: int, gutter: int) const 🔗
返回 gutter
中当前位于 line
的图标。仅当边栏类型为 GUTTER_TYPE_ICON 时才有效(请参阅 set_gutter_type)。
Color get_line_gutter_item_color(line: int, gutter: int) const 🔗
返回边栏 gutter
中,当前位于 line
行的颜色。
Variant get_line_gutter_metadata(line: int, gutter: int) const 🔗
返回边栏 gutter
中,当前位于 line
行的元数据。
String get_line_gutter_text(line: int, gutter: int) const 🔗
返回 gutter
中当前位于 line
的文本。仅当边栏类型为 GUTTER_TYPE_STRING 时才有效(请参阅 set_gutter_type)。
返回所有行中行高的最大值。
注意:返回值受 line_spacing 和 font_size 的影响。不会比 1
小。
Array[Vector2i] get_line_ranges_from_carets(only_selections: bool = false, merge_adjacent: bool = true) const 🔗
返回行范围的 Array,其中 x
是第一行,y
是最后一行。这些范围内的所有行都将带有光标或是选区的一部分。每行都只能属于一个行范围,即使它上面有多个光标。
如果选区的结束列(get_selection_to_column)位于列 0
,则不会包含该行。如果选区在另一个选区结束后的行上开始,并且 merge_adjacent
为 true
,或者它们在同一行上开始和结束,则一个行范围将包含两个选区。
int get_line_width(line: int, wrap_index: int = -1) const 🔗
返回位于 line
的 wrap_index
的像素宽度。
int get_line_wrap_count(line: int) const 🔗
返回给定行换行的次数。
int get_line_wrap_index_at_column(line: int, column: int) const 🔗
返回给定行的列的换行索引。
PackedStringArray get_line_wrapped_text(line: int) const 🔗
返回代表各个换行索引的 String 数组。
Vector2 get_local_mouse_pos() const 🔗
返回针对文本方向调整过的局部鼠标位置。
返回该 TextEdit 的 PopupMenu。默认情况下,会在右键单击 TextEdit 时显示改菜单。
你可以添加自定义菜单项,也可以移除标准菜单项。请确保你使用的 ID 与标准菜单项的 ID 不冲突(见 MenuItems)。例如:
GDScriptC#
func _ready():
var menu = get_menu()
# 移除“撤销”后的所有菜单项。
menu.item_count = menu.get_item_index(MENU_REDO) + 1
# 添加自定义菜单项。
menu.add_separator()
menu.add_item("插入日期", MENU_MAX + 1)
# 连接回调。
menu.id_pressed.connect(_on_item_pressed)
func _on_item_pressed(id):
if id == MENU_MAX + 1:
insert_text_at_caret(Time.get_date_string_from_system())
public override void _Ready()
{
var menu = GetMenu();
// 移除“撤销”后的所有菜单项。
menu.ItemCount = menu.GetItemIndex(TextEdit.MenuItems.Redo) + 1;
// 添加自定义菜单项。
menu.AddSeparator();
menu.AddItem("插入日期", TextEdit.MenuItems.Max + 1);
// 添加事件处理器。
menu.IdPressed += OnItemPressed;
}
public void OnItemPressed(int id)
{
if (id == TextEdit.MenuItems.Max + 1)
{
InsertTextAtCaret(Time.GetDateStringFromSystem());
}
}
警告:这是必要的内部节点,将其移除或释放会导致崩溃。如果你想要将其隐藏,或者将其子节点隐藏,请使用对应的 Window.visible 属性。
int get_minimap_line_at_pos(position: Vector2i) const 🔗
返回小地图 position
处等价的行。
int get_minimap_visible_lines() const 🔗
返回小地图上能够绘制的行数。
Vector2i get_next_visible_line_index_offset_from(line: int, wrap_index: int, visible_amount: int) const 🔗
类似于 get_next_visible_line_offset_from,但考虑了换行索引。在返回的向量中,x
是行,y
是换行索引。
int get_next_visible_line_offset_from(line: int, visible_amount: int) const 🔗
返回从 line
到 line + visible_amount
的下一个可见行的计数。也可以倒数计数。例如,如果 TextEdit 有 5 行,其中隐藏了第 2 行和第 3 行,使用 line = 1, visible_amount = 1
调用它会返回 3。
Vector2i get_pos_at_line_column(line: int, column: int) const 🔗
返回给定 line
和 column
的局部位置。如果返回的向量的 x
或 y
等于 -1
,则该位置在该控件的可视区域之外。
注意:Y 位置对应于行的底部。请使用 get_rect_at_line_column 来获取顶部位置。
Rect2i get_rect_at_line_column(line: int, column: int) const 🔗
返回给定 line
和 column
处的字素的局部位置和大小。如果返回的矩形的 x
或 y
位置等于 -1
,则该位置在该控件的可视区域之外。
注意:返回的矩形的 Y 位置对应于该行的顶部,不像 get_pos_at_line_column 返回底边。
int get_saved_version() const 🔗
从 tag_saved_version 返回最后一个标记的保存版本。
float get_scroll_pos_for_line(line: int, wrap_index: int = 0) const 🔗
返回 line
的 wrap_index
对应的滚动位置。
String get_selected_text(caret_index: int = -1) 🔗
返回光标所选文本,如果 caret_index
为默认值 -1
则为所有光标所选文本。
int get_selection_at_line_column(line: int, column: int, include_edges: bool = true, only_selections: bool = true) const 🔗
返回给定 line
和 column
处选区的光标索引,如果没有,则返回 -1
。
如果 include_edges
为 false
,则位置必须位于选区内,而不是两端。如果 only_selections
为 false
,则还会考虑没有选区的光标。
int get_selection_column(caret_index: int = 0) const 🔗
已弃用: Use get_selection_origin_column instead.
返回选区的原始起始列。
int get_selection_from_column(caret_index: int = 0) const 🔗
返回选区的起始列。如果没有选区,则返回光标列。
int get_selection_from_line(caret_index: int = 0) const 🔗
返回选区的起始行。如果没有选区,则返回光标行。
int get_selection_line(caret_index: int = 0) const 🔗
已弃用: Use get_selection_origin_line instead.
返回选区的原始起始行。
SelectionMode get_selection_mode() const 🔗
返回当前的选区模式。
int get_selection_origin_column(caret_index: int = 0) const 🔗
返回选区的起始列。这是光标的另一端。
int get_selection_origin_line(caret_index: int = 0) const 🔗
返回选区的起始行。这是光标的另一端。
int get_selection_to_column(caret_index: int = 0) const 🔗
返回选区的结束列。如果没有选区,则返回光标列。
int get_selection_to_line(caret_index: int = 0) const 🔗
返回选区结束行。如果没有选区,则返回光标行。
PackedInt32Array get_sorted_carets(include_ignored_carets: bool = false) const 🔗
返回按选区排序的光标,从最低行和列开始到最高(从文本的顶部到底部)。
如果 include_ignored_carets
为 false
,则 multicaret_edit_ignore_caret 中的光标将被忽略。
返回该 TextEdit 的制表符大小。
int get_total_gutter_width() const 🔗
返回所有栏位及内部边距的总宽度。
int get_total_visible_line_count() const 🔗
返回可绘制的行数。
VScrollBar get_v_scroll_bar() const 🔗
设置该 TextEdit 所使用的 StyleBox。
返回该 TextEdit 的当前版本。版本是撤消/重做历史所记录操作的计数。
int get_visible_line_count() const 🔗
返回可见行数,包括自动换行。
int get_visible_line_count_in_range(from_line: int, to_line: int) const 🔗
返回两行之间,可见行与换行的行的总数。
String get_word_at_pos(position: Vector2) const 🔗
返回位于 position
的单词。
String get_word_under_caret(caret_index: int = -1) const 🔗
返回一个 String 文本,其中包含文本光标位置下的单词。
如果用户的输入法编辑器中存在文本,则返回 true
。
有“重做”动作可用时返回 true
。
bool has_selection(caret_index: int = -1) const 🔗
如果用户选中了文本,则返回 true
。
有“撤销”动作可用时返回 true
。
void insert_line_at(line: int, text: String) 🔗
在第 line
行插入文本为 text
的新行。
void insert_text(text: String, line: int, column: int, before_selection_begin: bool = true, before_selection_end: bool = false) 🔗
在 line
和 column
处插入 text
。
如果 before_selection_begin
为 true
,则从 line
和 column
开始的光标和选区将移动到插入文本的末尾,连同其后的所有光标。
如果 before_selection_end
为 true
,则从 line
和 column
结束的选区将扩展到插入文本的末尾。这些参数可用于在选区内部或外部插入文本。
void insert_text_at_caret(text: String, caret_index: int = -1) 🔗
在光标位置插入指定的文本。
bool is_caret_after_selection_origin(caret_index: int = 0) const 🔗
如果选区的光标位于选区原点之后,则返回 true
。这可用于确定选区的方向。
bool is_caret_visible(caret_index: int = 0) const 🔗
如果光标在屏幕上可见,则返回 true
。
bool is_dragging_cursor() const 🔗
如果用户拖动鼠标进行滚动、选择或文本拖动,则返回 true
。
bool is_gutter_clickable(gutter: int) const 🔗
返回该边栏是否可点击。
bool is_gutter_drawn(gutter: int) const 🔗
返回该边栏是否正被绘制。
bool is_gutter_overwritable(gutter: int) const 🔗
返回该边栏是否可覆写。
bool is_in_mulitcaret_edit() const 🔗
如果已调用 begin_multicaret_edit 且尚未调用 end_multicaret_edit 则返回 true
。
bool is_line_gutter_clickable(line: int, gutter: int) const 🔗
返回该边栏的给定行是否可点击。
bool is_line_wrapped(line: int) const 🔗
返回给定的行是否换行。
bool is_menu_visible() const 🔗
返回菜单是否可见。请使用这个方法来代替 get_menu().visible
,可以提高性能(因为避免了菜单的创建)。
bool is_mouse_over_selection(edges: bool, caret_index: int = -1) const 🔗
返回鼠标是否位于选区之上。如果 edges
为 true
,则边界会被认为是选区的一部分。
bool is_overtype_mode_enabled() const 🔗
返回用户是否处于改写模式。
void menu_option(option: int) 🔗
执行 MenuItems 枚举中定义的给定操作。
void merge_gutters(from_line: int, to_line: int) 🔗
合并从 from_line
到 to_line
的边栏。只会复制可覆盖的边栏。
void merge_overlapping_carets() 🔗
合并重叠的文本光标。会保留最新的光标,或者选区的光标。
如果 is_in_mulitcaret_edit 为 true
,则合并将排队等待以在多光标编辑结束时发生。请参阅 begin_multicaret_edit 和 end_multicaret_edit。
注意:光标改变位置后不会进行调用,而是在某些动作之后调用,所以进入光标重叠的状态是可能的。
bool multicaret_edit_ignore_caret(caret_index: int) const 🔗
如果给定的 caret_index
应作为多光标编辑的一部分被忽略,则返回 true
。请参阅 begin_multicaret_edit 和 end_multicaret_edit。应忽略的光标是已移除文本的一部分,可能会在编辑结束时合并,或在编辑期间添加的光标。
如果应忽略光标,建议在循环中 continue
迭代多个光标。
void paste(caret_index: int = -1) 🔗
粘贴到当前位置。可以用 _paste 覆盖。
void paste_primary_clipboard(caret_index: int = -1) 🔗
粘贴主剪贴板。
void redo() 🔗
执行重做操作。
void remove_caret(caret: int) 🔗
移除给定的文本光标索引。
注意:可能导致所有其他光标索引的调整。
void remove_gutter(gutter: int) 🔗
从 TextEdit 中移除该边栏。
void remove_line_at(line: int, move_carets_down: bool = true) 🔗
移除 line
处的文本行。该行上的光标将尝试匹配其先前的可视 x 位置。
如果 move_carets_down
为 true
,则光标将向下移动到下一行,否则光标将向上移动。
void remove_secondary_carets() 🔗
移除所有额外的光标。
void remove_text(from_line: int, from_column: int, to_line: int, to_column: int) 🔗
移除给定位置之间的文本。
Vector2i search(text: String, flags: int, from_line: int, from_column: int) const 🔗
在文本内部进行搜索。搜索标志可以在 SearchFlags 枚举中指定。
在返回的向量中,x
是列,y
是行。如果没有找到结果,则两者都等于 -1
。
GDScriptC#
var result = search("print", SEARCH_WHOLE_WORDS, 0, 0)
if result.x != -1:
# 找到了结果。
var line_number = result.y
var column_number = result.x
Vector2I result = Search("print", (uint)TextEdit.SearchFlags.WholeWords, 0, 0);
if (result.X != -1)
{
// 找到了结果。
int lineNumber = result.Y;
int columnNumber = result.X;
}
void select(origin_line: int, origin_column: int, caret_line: int, caret_column: int, caret_index: int = 0) 🔗
对于给定的 caret_index
,从 origin_line
和 origin_column
到 caret_line
和 caret_column
选择文本。这会移动选区原点和光标。如果位置相同,则将取消选区。
如果 selecting_enabled 为 false
,则不会出现选区。
注意:如果支持多个光标,则不会检查是否有任何重叠。请参阅 merge_overlapping_carets。
void select_all() 🔗
选择所有文本。
如果 selecting_enabled 为 false
,则不会发生选择。
void select_word_under_caret(caret_index: int = -1) 🔗
选中光标下的单词。
void set_caret_column(column: int, adjust_viewport: bool = true, caret_index: int = 0) 🔗
将光标移动到指定的 column
索引。
如果 adjust_viewport
为 true
,则视口将在移动发生后以光标位置为中心。
注意:如果支持多个光标,则不会检查任何重叠。请参阅 merge_overlapping_carets。
void set_caret_line(line: int, adjust_viewport: bool = true, can_be_hidden: bool = true, wrap_index: int = 0, caret_index: int = 0) 🔗
将光标移动到指定的 line
索引。光标列将移动到上次调用 set_caret_column 时的相同可视位置,或限制在行尾。
如果 adjust_viewport
为 true
,则移动后视口将以光标位置为中心。
如果 can_be_hidden
为 true
,则指定的 line
可以隐藏。
如果 wrap_index
为 -1
,则光标列将限制在 line
的长度范围内。如果 wrap_index
大于 -1
,则将移动该列以尝试将行的 wrap_index
上的可视 x 位置与上次调用 set_caret_column 时的位置相匹配。
注意:如果支持多个光标,则不会检查任何重叠。请参阅 merge_overlapping_carets。
void set_gutter_clickable(gutter: int, clickable: bool) 🔗
将边栏设置为可点击。当鼠标在边栏上悬停时,会将鼠标光标变为指点的手形。
void set_gutter_custom_draw(column: int, draw_callback: Callable) 🔗
为边栏设置自定义的绘制方法。回调方法必须接受以下参数:line: int, gutter: int, Area: Rect2
。仅当边栏类型为 GUTTER_TYPE_CUSTOM 时才有效(请参阅 set_gutter_type)。
void set_gutter_draw(gutter: int, draw: bool) 🔗
设置该边栏是否应被绘制。
void set_gutter_name(gutter: int, name: String) 🔗
设置该边栏的名称。
void set_gutter_overwritable(gutter: int, overwritable: bool) 🔗
设置该边栏为可覆写。见 merge_gutters。
void set_gutter_type(gutter: int, type: GutterType) 🔗
设置边栏的类型。边栏可以包含图标、文本或自定义视觉效果。有关选项,请参阅 GutterType。
void set_gutter_width(gutter: int, width: int) 🔗
设置该边栏的宽度。
void set_line(line: int, new_text: String) 🔗
设置第 line
行的文本。
位于该行的光标会尝试保持视觉上的 X 位置。
void set_line_as_center_visible(line: int, wrap_index: int = 0) 🔗
将 line
的 wrap_index
放置在视口的中心。
void set_line_as_first_visible(line: int, wrap_index: int = 0) 🔗
将 line
的 wrap_index
放置在视口的顶部。
void set_line_as_last_visible(line: int, wrap_index: int = 0) 🔗
将 line
的 wrap_index
放置在视口的底部。
void set_line_background_color(line: int, color: Color) 🔗
设置该行的当前背景色。设置为 Color(0, 0, 0, 0)
则没有颜色。
void set_line_gutter_clickable(line: int, gutter: int, clickable: bool) 🔗
如果 clickable
为 true
,则让位于 line
的 gutter
可点击。见 gutter_clicked。
void set_line_gutter_icon(line: int, gutter: int, icon: Texture2D) 🔗
将 line
上的 gutter
的图标设置为 icon
。仅当边栏类型为 GUTTER_TYPE_ICON 时才有效(请参阅 set_gutter_type)。
void set_line_gutter_item_color(line: int, gutter: int, color: Color) 🔗
将边栏 gutter
在第 line
行的颜色设置为 color
。
void set_line_gutter_metadata(line: int, gutter: int, metadata: Variant) 🔗
将边栏 gutter
在第 line
行的元数据设置为 metadata
。
void set_line_gutter_text(line: int, gutter: int, text: String) 🔗
将 line
上的 gutter
的文本设置为 text
。仅当边栏类型为 GUTTER_TYPE_STRING 时才有效(请参阅 set_gutter_type)。
void set_overtype_mode_enabled(enabled: bool) 🔗
如果为 true
,则将用户设置为改写模式。当用户在该模式下键入时,它将覆盖现有文本。
void set_search_flags(flags: int) 🔗
设置搜索标志 flags
。配合 set_search_text 使用可以高亮被搜索的文本。搜索标志可以使用 SearchFlags 枚举指定。
void set_search_text(search_text: String) 🔗
设置搜索文本。见 set_search_flags。
void set_selection_mode(mode: SelectionMode) 🔗
设置当前的选区模式。
void set_selection_origin_column(column: int, caret_index: int = 0) 🔗
将给定 caret_index
的选区原点列设置为 column
。如果选区原点移动到光标位置,则选区将取消。
void set_selection_origin_line(line: int, can_be_hidden: bool = true, wrap_index: int = -1, caret_index: int = 0) 🔗
为给定 caret_index
将选区原点行设置为 line
。如果选区原点移动到光标位置,则该选区将取消选择。
如果 can_be_hidden
为 false
,则该行将设置为下方或上方最近的未隐藏行。
如果 wrap_index
为 -1
,则选区原点列将被限制为 line
的长度。如果 wrap_index
大于 -1
,则将移动该列以尝试将行的 wrap_index
上的可视 x 位置与上次调用 set_selection_origin_column 或 select 时的位置相匹配。
void set_tab_size(size: int) 🔗
设置该 TextEdit 使用的制表符大小。
void set_tooltip_request_func(callback: Callable) 🔗
提供自定义工具提示文本。该回调方法必须接受以下参数:hovered_word: String
。
void skip_selection_for_next_occurrence() 🔗
将选区和光标移动到当前选择的下一个匹配项。如果没有活动的选区,则移动到光标下的单词的下一个匹配项。
void start_action(action: EditAction) 🔗
开始一个动作,如果 action
与当前动作不同,则会终止当前动作。
调用 end_action、触发 ProjectSettings.gui/timers/text_edit_idle_detect_sec 或者在 start_action 和 end_action 之外调用可撤销的操作都会导致动作的终止。
void swap_lines(from_line: int, to_line: int) 🔗
交换两行。光标将与行交换。
void tag_saved_version() 🔗
将当前版本标记为已保存。
void undo() 🔗
执行撤销操作。
主题属性说明
Color background_color = Color(0, 0, 0, 0)
🔗
设置该 TextEdit 的背景 Color。
Color caret_background_color = Color(0, 0, 0, 1)
🔗
使用块状光标时,光标下文本的 Color。
Color caret_color = Color(0.875, 0.875, 0.875, 1)
🔗
光标的 Color。可以设为完全透明的颜色,从而完全隐藏光标。
Color current_line_color = Color(0.25, 0.25, 0.26, 0.8)
🔗
光标所在行的背景 Color。
Color font_color = Color(0.875, 0.875, 0.875, 1)
🔗
设置字体颜色 Color。
Color font_outline_color = Color(0, 0, 0, 1)
🔗
该 TextEdit 的文本轮廓的色调。
Color font_placeholder_color = Color(0.875, 0.875, 0.875, 0.6)
🔗
placeholder_text 的字体颜色。
Color font_readonly_color = Color(0.875, 0.875, 0.875, 0.5)
🔗
Color font_selected_color = Color(0, 0, 0, 0)
🔗
设置所选文本的 Color。如果等于 Color(0, 0, 0, 0)
,则该属性将被忽略。
Color search_result_border_color = Color(0.3, 0.3, 0.3, 0.4)
🔗
与搜索查询匹配的文本周围的边框的 Color。
Color search_result_color = Color(0.3, 0.3, 0.3, 1)
🔗
与搜索查询匹配的文本背景的 Color。
Color selection_color = Color(0.5, 0.5, 0.5, 1)
🔗
设置文本选择的高亮 Color 颜色。
Color word_highlighted_color = Color(0.5, 0.5, 0.5, 0.25)
🔗
设置多次出现的高亮 Color 颜色。须启用 highlight_all_occurrences 。
文本光标的像素宽度。较大的值能够确保光标易于看到,确保光标与较大的字体保持一致,从而提高可访问性。如果设置为 0
或更低,光标的宽度将被自动设置为 1 像素,并乘以显示缩放系数。
设置行间距。
文字轮廓的大小。
注意:如果使用启用了 FontFile.multichannel_signed_distance_field 的字体,其 FontFile.msdf_pixel_range 必须至少设置为 outline_size 的两倍,轮廓渲染才能看起来正确。否则,轮廓可能会比预期的更早被切断。
设置默认的字体 Font。
设置默认的字体大小。
为空格文本字符,设置一个自定义 Texture2D。
为制表符文本字符,设置一个自定义 Texture2D。
设置当获得焦点时的 StyleBox。该 focus StyleBox 显示在基础 StyleBox 之上,因此应使用部分透明的 StyleBox 以确保基础 StyleBox 保持可见。表示轮廓或下划线的 StyleBox 非常适合此目的。要禁用焦点视觉效果,请指定一个 StyleBoxEmpty 资源。请注意,禁用焦点视觉效果会破坏键盘 / 控制器导航的可用性,出于可访问性原因,不建议这样做。
设置这个 TextEdit 的 StyleBox。