level 4
KnIfER
楼主
一、Notepad++ (Scintilla)式
网上有人说 Notepad++ 改进了 Scintilla 的列选模式,其实不是的,都是 Scintilla 编辑器组件的原生功能。
Alt+鼠标拖拽,托选出一个方形的选择区域,名之曰:Rectangle Selection.
快速列选:Alt+shift+鼠标点击,可快速选出方形列区,无需鼠标拖来拖去。

许多编辑器都是这个模式,包括 Visual Studio、其他大部分。
二、Android Studio 式
同样是用Alt+鼠标拖拽,但结果不是方形的选择区域,而是类似于多光标、多选择模式,可以快速选中多行代码的行末位置,也可以选择中间位置相近的地方。



实际使用中我发现两种列选模式都有用武之地。
Scintilla 是否可以同时启用两种列选模式呢?
Scintilla 开启方形选择区域的代码:
execute(SCI_SETVIRTUA
LSP
ACEOPTIONS, SCVS_RECTANGULARSELECTION)
含义:设置“虚空格”选项,加上标志位:Rectangular Selection。
如果去掉这行代码,发现此时列选模式有些不伦不类:

有的地方选择了行末位置,有的地方却在中间。事实上 Scintilla 的官方示例程序,SciTE.exe 就没有开启方形选区的标志位,是以有人说 Notepad++ 改进了 Scintilla 的列选模式。其实并没有,只是打开一个开关而已。
Scintilla 式方形选区和 Android Studio 式多行列选模式都有用得到的时候。是否可以将 Android Studio 列选特性合并到 Scintilla 中,代替后者不伦不类的非方形列选模式?事实上是可以的,而且极其简单,只需修改 Scintilla 的两处相关代码即可。

如果不用此 Android Studio 式多行列选模式,也可以用“多光标”模式实现类似效果,需要用ctrl+鼠标一个个去点击,如果行数比较多的话就失去了意义。
如果不修改 Scintilla,也可以安装 BetterMultiSelection插件,拖出方形区域后,按一下end键,就可以将方形区域转换为行末的多行列选,不过只能选择行末了。
只有如我一般去修改 Scintilla,让其同时具备两种列选模式,才是上乘之道。
2021年05月03日 15点05分
1
网上有人说 Notepad++ 改进了 Scintilla 的列选模式,其实不是的,都是 Scintilla 编辑器组件的原生功能。
Alt+鼠标拖拽,托选出一个方形的选择区域,名之曰:Rectangle Selection.
快速列选:Alt+shift+鼠标点击,可快速选出方形列区,无需鼠标拖来拖去。

许多编辑器都是这个模式,包括 Visual Studio、其他大部分。二、Android Studio 式
同样是用Alt+鼠标拖拽,但结果不是方形的选择区域,而是类似于多光标、多选择模式,可以快速选中多行代码的行末位置,也可以选择中间位置相近的地方。



实际使用中我发现两种列选模式都有用武之地。Scintilla 是否可以同时启用两种列选模式呢?
Scintilla 开启方形选择区域的代码:
execute(SCI_SETVIRTUA
LSP
ACEOPTIONS, SCVS_RECTANGULARSELECTION)
含义:设置“虚空格”选项,加上标志位:Rectangular Selection。
如果去掉这行代码,发现此时列选模式有些不伦不类:

有的地方选择了行末位置,有的地方却在中间。事实上 Scintilla 的官方示例程序,SciTE.exe 就没有开启方形选区的标志位,是以有人说 Notepad++ 改进了 Scintilla 的列选模式。其实并没有,只是打开一个开关而已。Scintilla 式方形选区和 Android Studio 式多行列选模式都有用得到的时候。是否可以将 Android Studio 列选特性合并到 Scintilla 中,代替后者不伦不类的非方形列选模式?事实上是可以的,而且极其简单,只需修改 Scintilla 的两处相关代码即可。

如果不用此 Android Studio 式多行列选模式,也可以用“多光标”模式实现类似效果,需要用ctrl+鼠标一个个去点击,如果行数比较多的话就失去了意义。如果不修改 Scintilla,也可以安装 BetterMultiSelection插件,拖出方形区域后,按一下end键,就可以将方形区域转换为行末的多行列选,不过只能选择行末了。
只有如我一般去修改 Scintilla,让其同时具备两种列选模式,才是上乘之道。
