多重选择
快捷键
- ⌘ + d
选择下一个和当前选取单词
一样的单词. - ⌘ + f3
选择当前 view 所有和当前选取单词
一样的单词.
何谓当前选取单词
?
- 光标停留在单词上面(选区为空)
- 鼠标框选, 或者 shift + 方向键选择一片区域(选区不为空)
Ex:
hello world
Hello World
helloworld
HelloWorld
光标停在第一个 hello 上, ⌘ + d
选择整个 hello 单词, ⌘ + d
对比一下两者的区别.
分析
**
多重选择的本质: 就是把若干选区放进 region_list 的过程
**
假设有一个 region_list = [ ]
每个选区就是一个 Class sublime.Region
的实例.
如果当前选区为空, 则根据光标获得当前单词
为匹配选区
, 否则第一个选区是默认匹配选区
通过选区内容的匹配, 得到下一个选区. 并加入 region_list
匹配规则和当前的搜索规则一样.
Ex:
⌘ + f, 弹出搜索框
试试切换Aa
" "
, 再 ⌘ + d, 可以精确到长度, 大小写
.*
正则表达式在后面
多行编辑
在多重选择的基础上, 得到若干个选区的列表(region_list)
这个时候的操作和输入, 就是对 region_list 中每个元素的操作和输入替换.
扩展
书签(bookmark)
- ⌘ + f2
记录当前选区, 在书签的左上方, 记录一个圆点 - f2
跳转并重新获得记录的选区
一行有多个 bookmark 的时候, 行首有且只有一个圆点, 所以在单个 bookmark 反向选取的时候, 其实是取消了, 但是小圆点并没有消失.
可以将多行的选取记录为一个 bookmark, 比如一个 for 循环.
多行编辑时的复制和粘贴.
假设有2个 region_list.
在多重选择 region_list_A 的时候, 复制
在多重选择 region_list_B 的时候, 粘贴
如果两个 list 的长度一样的话, 则会在 region_list_B 的每个元素后面, 分别粘贴 region_list_A 对应位置的元素.
如果长度不等, 则在 region_list_B 每个元素后面粘贴整个 region_list_A.
正则表达式
通过正则表达式, 得到想要的多重选区.
⌘ + F, 弹出搜索框.
勾选.*
, 输入正则表达式
点击右边的Find All
, 得到匹配的所有文本.
-- Floyda --
网友评论