一次可能有多个选择处于活动状态。按住Ctrl键并用鼠标拖动,可以进行更多选择。最新的选择是主选择,决定自动显示文档的哪个部分。除了主选择之外的任何选择都称为附加选择。上一节中的调用对主选项进行操作。始终至少有一个选择。可通过SCI_CANCEL将选择简化为仅主选择,SCI_CANCEL通常映射到Esc键。
矩形选择将作为多个选择处理,但会记住原始矩形范围,以便对矩形选择以不同方式处理后续操作。例如,粘贴矩形选择将每一块放置在垂直列中。
虚拟空间是每行末尾以外的空间。插入符号可以移动到虚拟空间,但在键入某些文本或使用其他文本插入命令之前,不会向文档中添加任何实际空间。
将不连续的选择复制到剪贴板时,每个选择都会按顺序添加到剪贴板文本中,不带分隔符。对于矩形选择,文档的行尾添加在每行文本之后。矩形选择总是从顶行复制到底行,而不是按选择的顺序。不会复制虚拟空间。
SCI_SETMULTIPLESELECTION(bool multipleSelection) SCI_GETMULTIPLESELECTION → bool**
启用或禁用多个选择。禁用“多重选择”时,在按住Ctrl键的同时用鼠标拖动,无法选择多个范围。
SCI_SETADDITIONALSELECTIONTYPING(bool additionalSelectionTyping) SCI_GETADDITIONALSELECTIONTYPING → bool
无论是打字、换行、光标左/右/上/下、退格、删除、主页还是结束工作,都可以同时进行多项选择。还允许选择和字行删除命令。
SCI_SETMULTIPASTE(int multiPaste) SCI_GETMULTIPASTE → int
当粘贴到多个选择中时,粘贴的文本可以进入SC_MULTIPASTE_ONCE=0的主选择中,或者进入SC_MULTIPASTE_EACH=1的每个选择中。SC_MULTIPASTE_ONCE是默认值。
SCI_SETVIRTUALSPACEOPTIONS(int virtualSpaceOptions) SCI_GETVIRTUALSPACEOPTIONS → int
可以为矩形选择启用或禁用虚拟空间,也可以在其他情况下启用或禁用虚拟空间,或者在这两种情况下启用或禁用虚拟空间。有三个位标志SCVS_RECTANGULARSELECTION=1、SCVS_USERACCESSIBLE=2和SCVS_NOWRAPLINESTART=4,可以单独设置。默认情况下,SCVS_NONE=0将禁用所有虚拟空间的使用。
SCVS_NOWRAPLINESTART防止左箭头移动和选择换行到上一行。这通常与虚拟空间结合使用,但这是一个独立的设置,因此在没有虚拟空间的情况下也可以工作。
SCI_SETRECTANGULARSELECTIONMODIFIER(int modifier) SCI_GETRECTANGULARSELECTIONMODIFIER → int
在GTK和Qt上,可以设置用于指示在与鼠标拖动组合时应创建矩形选择的键。这三个可能的值是SCMOD_CTRL=2、SCMOD_ALT=4(默认值)或SCMOD_SUPER=8。由于窗口管理器可能已经使用了SCMOD_ALT,因此窗口管理器可能需要配置以允许此选择。SCMOD_SUPER通常是一个依赖于系统的修改键,如Windows键盘上的左Windows键或Mac上的命令键。
SCI_GETSELECTIONS → int
返回当前活动的选择数。始终至少有一个选择。
SCI_GETSELECTIONEMPTY → bool
如果每个选定范围都为空,则返回1,否则返回0。
SCI_CLEARSELECTIONS
清空所有选择。
SCI_SETSELECTION(position caret, position anchor)
将从锚点到插入符号的单个选择设置为唯一选择。
SCI_ADDSELECTION(position caret, position anchor)
将一个新选择从锚点添加到插入符号,作为主选择,保留所有其他选择作为附加选择。由于始终至少有一个选择,要设置选择列表,应使用SCI_SETSELECTION添加第一个选择,然后使用SCI_ADDSELECTION添加后续选择
SCI_DROPSELECTIONN(int selection)
如果有多个选择,请删除指示的选择。如果这是主选择,则将上一个选择作为主选择,如果是第一个选择,则最后一个选择成为主选择。如果只有一个选择,或者没有选择,则没有效果。
SCI_SETMAINSELECTION(int selection) SCI_GETMAINSELECTION → int
其中一个选项是主选项,用于确定自动可见的文本范围。主选项可以以不同的颜色显示,也可以使用不同样式的插入符号。只有已经存在的选择才能成为主选择。
SCI_SETSELECTIONNCARET(int selection, position caret) SCI_GETSELECTIONNCARET(int selection) → position SCI_SETSELECTIONNCARETVIRTUALSPACE(int selection, position space) SCI_GETSELECTIONNCARETVIRTUALSPACE(int selection) → position SCI_SETSELECTIONNANCHOR(int selection, position anchor) SCI_GETSELECTIONNANCHOR(int selection) → position SCI_SETSELECTIONNANCHORVIRTUALSPACE(int selection, position space) SCI_GETSELECTIONNANCHORVIRTUALSPACE(int selection) → position
设置或查询每个已存在选择的插入符号和定位符号的位置和虚拟空间量。
SCI_SETRECTANGULARSELECTIONCARET(position caret) SCI_GETRECTANGULARSELECTIONCARET → position SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE(position space) SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE → position SCI_SETRECTANGULARSELECTIONANCHOR(position anchor) SCI_GETRECTANGULARSELECTIONANCHOR → position SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE(position space) SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE → position
设置或查询矩形选择的插入符号和定位符号的虚拟空间的位置和数量。设置矩形选择后,将其分解为多个选择,每行一个。
SC_ELEMENT_SELECTION_ADDITIONAL_TEXT : colouralpha SC_ELEMENT_SELECTION_ADDITIONAL_BACK : colouralpha SCI_SETADDITIONALSELALPHA(alpha alpha) SCI_GETADDITIONALSELALPHA → int SCI_SETADDITIONALSELFORE(colour fore) SCI_SETADDITIONALSELBACK(colour back)
修改其他选择的外观,使其与主选择区分开来,主选择的外观设置为SC_ELEMENT_SELECTION_TEXT, SC_ELEMENT_SELECTION_BACK, SCI_SETSELALPHA, SCI_GETSELALPHA, SCI_SETSELFORE, and SCI_SETSELBACK.。首选元素API,不建议使用以下消息。附加选择背景绘制在SCI_SETSELECTIONLAYER为所有选择背景定义的图层上。SCI_SETADDITIONALSELFORE和SCI_SETADDITIONALSELBACK调用在调用SCI_SETSELFORE和SCI_SETSELBACK并将useSetting值设置为true之前无效。对SCI_SETSELFORE和SCI_SETSELBACK的后续调用将覆盖SCI_SETADDITIONALSEL*函数设置的值。
SC_ELEMENT_CARET_ADDITIONAL : colouralpha SCI_SETADDITIONALCARETFORE(colour fore) SCI_GETADDITIONALCARETFORE → colour SCI_SETADDITIONALCARETSBLINK(bool additionalCaretsBlink) SCI_GETADDITIONALCARETSBLINK → bool
修改附加插入符号的外观,使其与主插入符号区分开来,主插入符号的外观设置为SC_ELEMENT_CARET、SCI_SETCARETFORE、SCI_GETCARETFORE、SCI_SETCARETPERIOD和SCI_GETCARETPERIOD。
SCI_SETADDITIONALCARETSVISIBLE(bool additionalCaretsVisible) SCI_GETADDITIONALCARETSVISIBLE → bool
确定是否显示其他插入符号(默认为true)。
SCI_SWAPMAINANCHORCARET SCI_ROTATESELECTION SCI_MULTIPLESELECTADDNEXT SCI_MULTIPLESELECTADDEACH
可以将这些命令指定给关键点,以便能够操纵多个选择。SCI_SWAPMAINANCHORCARET将插入符号移动到主选择的另一端。SCI_ROTATESELECTION使下一个选择成为主选择。
SCI_MULTIPLESELECTADDNEXT将目标中主选择的下一次出现添加到选择集作为主选择。如果当前所选内容为空,则选择插入符号周围的单词。使用当前的搜索标志,以便应用程序可以选择区分大小写和单词搜索选项。
SCI_MULTIPLESELECTADDEACH与SCI_MULTIPLESELECTADDNEXT类似,但添加多个实例,而不是仅添加一个。
用于控制滚动条。
SCI_SETFIRSTVISIBLELINE(line displayLine) SCI_GETFIRSTVISIBLELINE → line
这些消息检索并设置Scintilla视图中第一条可见行的行号。文档中的第一行编号为0。执行该消息后滚动条自动移动使所设置行号为第一行,但是光标位置不变。
SCI_SETXOFFSET(int xOffset) SCI_GETXOFFSET → int
xOffset是文本视图开头的水平滚动位置(以像素为单位)。值0是视图左侧第一个文本列可见的正常位置。
SCI_LINESCROLL(position columns, line lines)
这将尝试按指定的列数和行数滚动显示。正行值增加屏幕顶部的行号(即,它们将文本向上移动到用户所关心的位置),负行值则相反。
列度量是默认样式中空间的宽度。正值会增加视图左边缘的列(即,它们会将文本向左移动,直到用户关注为止)。负值则相反。
SCI_SCROLLCARET
如果当前位置(如果没有选择,则为插入符号)不可见,则根据当前插入符号策略滚动视图以使其可见。注:可见行在尾部显示。
SCI_SCROLLRANGE(position secondary, position primary)
将参数位置和它们之间的范围滚动到视图中,使主位置优先于次位置。该行为类似于SCI_SCROLLCARET,使用的是主位置而不是插入符号。然后努力确保辅助位置和范围也可见。这可用于使搜索匹配可见。
SCI_SETXCARETPOLICY(int caretPolicy, int caretSlop) SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop)
这些设置了插入符号策略。caretPolicy的值包括CARET_SLOP, CARET_STRICT, CARET_JUMPS 和 CARET_EVEN。
值 | 描述 |
---|---|
CARET_SLOP | If set, we can define a slop value: caretSlop . This value defines an unwanted zone (UZ) where the caret is... unwanted. This zone is defined as a number of pixels near the vertical margins, and as a number of lines near the horizontal margins. By keeping the caret away from the edges, it is seen within its context. This makes it likely that the identifier that the caret is on can be completely seen, and that the current line is seen with some of the lines following it, which are often dependent on that line. |
CARET_STRICT | If set, the policy set by CARET_SLOP is enforced... strictly. The caret is centred on the display if caretSlop is not set, and cannot go in the UZ if caretSlop is set. |
CARET_JUMPS | If set, the display is moved more energetically so the caret can move in the same direction longer before the policy is applied again. '3UZ' notation is used to indicate three time the size of the UZ as a distance to the margin. |
CARET_EVEN | If not set, instead of having symmetrical UZs, the left and bottom UZs are extended up to right and top UZs respectively. This way, we favour the displaying of useful information: the beginning of lines, where most code reside, and the lines after the caret, for example, the body of a function. |
slop | strict | jumps | even | Caret can go to the margin | On reaching limit (going out of visibility or going into the UZ) display is... |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | Yes | moved to put caret on top/on right |
0 | 0 | 0 | 1 | Yes | moved by one position |
0 | 0 | 1 | 0 | Yes | moved to put caret on top/on right |
0 | 0 | 1 | 1 | Yes | centred on the caret |
0 | 1 | - | 0 | Caret is always on top/on right of display | - |
0 | 1 | - | 1 | No, caret is always centred | - |
1 | 0 | 0 | 0 | Yes | moved to put caret out of the asymmetrical UZ |
1 | 0 | 0 | 1 | Yes | moved to put caret out of the UZ |
1 | 0 | 1 | 0 | Yes | moved to put caret at 3UZ of the top or right margin |
1 | 0 | 1 | 1 | Yes | moved to put caret at 3UZ of the margin |
1 | 1 | - | 0 | Caret is always at UZ of top/right margin | - |
1 | 1 | 0 | 1 | No, kept out of UZ | moved by one position |
1 | 1 | 1 | 0 | No, kept out of UZ | moved to put caret at 3UZ of the margin |
注:这两个消息没查到使用方法。
SCI_SETVISIBLEPOLICY(int visiblePolicy, int visibleSlop)
这决定了在调用SCI_ENSUREVISIBLEENFORCEPOLICY时如何确定垂直定位。visiblePolicy参数采用VisibleSlop和VisibleStrict标志。它在操作上类似于SCI_SETYCARETPOLICY(int caretPolicy,int caretSlop)。
SCI_SETHSCROLLBAR(bool visible) SCI_GETHSCROLLBAR → bool
水平滚动条仅在超过宽度需要时显示。如果不想看到水平滚动条,可以设值SCI_SETHSCROLLBAR(0)。使用SCI_SETHSCROLLBAR(1) 再次启用。SCI_GETHSCROLLBAR返回当前状态。默认状态是在需要时显示它。
SCI_SETVSCROLLBAR(bool visible) SCI_GETVSCROLLBAR → bool
垂直滚动条仅在超过宽度需要时显示。如果不想看到垂直滚动条,可以设值SCI_SETVSCROLLBAR(0)。使用SCI_SETVSCROLLBAR(1) 再次启用。SCI_GETVSCROLLBAR返回当前状态。默认状态是在需要时显示它。
SCI_SETSCROLLWIDTH(int pixelWidth) SCI_GETSCROLLWIDTH → int
为了提高性能,Scintilla 不会测量文档的显示宽度来确定水平滚动条的属性。而是使用假定的宽度。这些消息设置并获取Scantilla假定的文档宽度(以像素为单位)。默认值为2000。要确保当前可见行的宽度可以滚动,可以使用SCI_SETSCROLLWIDTHTRACKING
SCI_SETSCROLLWIDTHTRACKING(bool tracking) SCI_GETSCROLLWIDTHTRACKING → bool
如果启用了滚动宽度跟踪,则会调整滚动宽度,以确保当前显示的所有行都可以完全滚动。此模式从不将滚动宽度调整为更窄。
SCI_SETENDATLASTLINE(bool endAtLastLine) SCI_GETENDATLASTLINE → bool
SCI_SETENDATLASTLINE设置滚动范围,以便最大滚动位置的最后一行位于视图底部(默认)。将此设置为false允许在最后一行下方滚动一些空白,方便查看。
用于控制空格以及制表符的显示。
SCI_SETVIEWWS(int viewWS) SCI_GETVIEWWS → int
可以使空白变得可见,这对于空白非常重要的语言(如Python)可能很有用。空格字符显示为小圆点,制表符显示为指向右侧的光箭头。还有一些方法可以控制行尾字符的显示。这两条消息设置并获取空白显示模式。viewWS参数可以是以下参数之一:
类型 | 值 | 描述 |
---|---|---|
SCWS_INVISIBLE | 0 | 默认设置,不显示空白符 |
SCWS_VISIBLEALWAYS | 1 | 所有空格显示为圆点,制表符显示为直线箭头 |
SCWS_VISIBLEAFTERINDENT | 2 | 除了缩进的空白,其他空格显示为圆点,制表符显示为直线箭头 |
SCWS_VISIBLEONLYININDENT | 3 | 缩进的空白显示为圆点,制表符显示为直线箭头 |
SC_ELEMENT_WHITE_SPACE : colouralpha SC_ELEMENT_WHITE_SPACE_BACK : colouralpha
默认情况下,可见空白的颜色由正在使用的lexer决定。所有可见空白的前景色和/或背景色可以全局设置,使用SC_ELEMENT_WHITE_SPACE 和SC_ELEMENT_WHITE_SPACE_BACK 覆盖lexer的颜色。
SCI_SETWHITESPACESIZE(int size) SCI_GETWHITESPACESIZE → int
默认情况下,可见空白的颜色由正在使用的lexer决定。所有可见空白的前景色和/或背景色可以全局设置,使用SC_ELEMENT_WHITE_SPACE 和SC_ELEMENT_WHITE_SPACE_BACK 覆盖lexer的颜色。
SCI_SETWHITESPACESIZE设置用于标记空格字符的点的大小。SCI_GETWHITESPACESIZE消息检索当前大小。值0有效,使点不可见。
SCI_SETTABDRAWMODE(int tabDrawMode) SCI_GETTABDRAWMODE → int
这两条消息获取并设置当空白可见时如何绘制制表符。tabDrawMode参数可以是以下参数之一:
类型 | 值 | 描述 |
---|---|---|
SCTD_LONGARROW | 0 | 箭头拉伸到tabstop的默认模式。 |
SCTD_STRIKEOUT | 1 | 一条水平线,一直延伸到制表符停止。 |
SCI_SETEXTRAASCENT(int extraAscent) SCI_GETEXTRAASCENT → int SCI_SETEXTRADESCENT(int extraDescent) SCI_GETEXTRADESCENT → int
控制行距,SCI_SETEXTRAASCENT为行距上部,SCI_SETEXTRADESCENT为行距下部。
用于控制光标状态。
SCI_SETCURSOR(int cursorType) SCI_GETCURSOR → int
执行慢速操作时,可以将更改为等待光标。您可以使用SCI_SETCURSOR设置光标类型。cursorType参数可以是:
类型 | 值 | 描述 |
---|---|---|
SC_CURSORNORMAL | -1 | 常规光标 |
SC_CURSORWAIT | 4 | 当鼠标移入编辑器时,光标显示为等待光标 |
游标值1到7定义了游标,但只有SC_CURSORWAIT可用。cursorType的其他值会导致显示指针。SCI_GETCURSOR消息返回上次设置的光标类型,如果未设置光标类型,则返回SC_CURSORNORMAL(-1)。
用于控制光标状态。
SCI_SETCURSOR(int cursorType) SCI_GETCURSOR → int
执行慢速操作时,可以将更改为等待光标。您可以使用SCI_SETCURSOR设置光标类型。cursorType参数可以是:
类型 | 值 | 描述 |
---|---|---|
SC_CURSORNORMAL | -1 | 常规光标 |
SC_CURSORWAIT | 4 | 当鼠标移入编辑器时,光标显示为等待光标 |
游标值1到7定义了游标,但只有SC_CURSORWAIT可用。cursorType的其他值会导致显示指针。SCI_GETCURSOR消息返回上次设置的光标类型,如果未设置光标类型,则返回SC_CURSORNORMAL(-1)。