表达式
额外的源代码导航快捷键
详细信息
安装次数
- 总数 6K
- Win 3K
- Mac 2K
- Linux 1K
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows系统 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 3 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac系统 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux系统 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
README
表达式
这是一个真正令人赞叹的插件,它提供了许多sublime-enhanced插件以及其他大量导航键盘快捷键所使用的API。
演示
安装
此插件是sublime-enhanced插件集的一部分。您可以安装sublime-enhanced插件,此时该插件将自动安装。
如果您希望单独安装此插件,请参阅sublime-enhanced插件包中的“单独安装插件”部分。
使用方法
根据下表使用键盘快捷键在打开的文件中导航。
命令
描述 | 键盘快捷键 |
---|---|
转到上一块 | ctrl+i |
转到下一块 | ctrl+k |
选择上一块 | ctrl+shift+i |
选择下一块 | ctrl+shift+k |
转到下一个括号的末尾 | ctrl+alt+\ |
转到括号内的前一个位置 | alt+enter |
转到括号或字符串外的上一个位置 | alt+shift+enter |
转到下一个括号或字符串外的位置 | ctrl+shift+enter |
转到括号内的上一个位置 | alt+ctrl+退格键 |
转到括号或字符串外的上一个位置 | alt+shift+退格键 |
转到括号或字符串外的上一个位置 | alt+ctrl+shift+退格键 |
转到匹配的括号或引号 | ctrl+alt+enter |
在括号或字符串内选择 | alt+ctrl+shift+enter |
选择包括包裹在内的括号或字符串 | alt+ctrl+shift+\ |
删除括号或字符串内的内容 | ctrl+alt+shift+\ |
选择到括号或引号内的位置 | alt+shift+\ |
选择到括号或引号外的位置 | ctrl+shift+\ |
删除括号或字符串后的内容 | alt+退格键 |
删除括号或字符串内的内容 | ctrl+alt+\ |
转到下一个括号或字符串的位置 | alt+ctrl+l |
选择括号或字符串前进 | alt+ctrl+shift+l |
向后查找括号或字符串 | ctrl+alt+j |
选择括号或字符串向后 | ctrl+alt+shift+j |
向前清理括号或引号 | ctrl+/ |
向后清理括号或引号 | ctrl+退格键 |
向前查找搜索结果 | alt+enter |
向后查找搜索结果 | alt+shift+enter |
API
朋友们,此插件的API有些臃肿;对此表示歉意。
find_matches(view, cursor, expression, options = {})
描述
根据光标和选项过滤表达式,在视图中查找所有匹配项。
参数
view - 查找括号的视图
cursor - int; 从视图中匹配表达式的点
expression - string; 要匹配的正则表达式
options
“backward” - bool; 是否从光标向前或向后查找匹配项;注意,匹配项将按从最近到最远的顺序排序。
“range” - [int, int]; 查找匹配项的视图中的范围;注意,将调用 view.substr(sublime.Region(*options['range'])),为找到匹配项的位置,您需要显式地将 options['range'][0] 添加到 match.start(group) 或 match.end(group)
“nesting” - 如何处理括号;True - 允许在括号内匹配;False 或 “start” - 禁止 match.start(0) 在括号内匹配;“end” - 禁止 match.end(0) 在括号内匹配;int - 禁止 match.start(int) 在括号内匹配;int 的数组 - 禁止数组中的每个元素在括号内匹配
“in_current_nesting” - bool; 仅在当前括号内查找
“string” - 与 “nesting” 选项类似,但用于字符串(不允许指定的正则表达式组击中字符串)
“comment” - 与 “nesting” 选项类似,但用于注释(不允许指定的正则表达式组击中注释)
“scope” - regexp; 组的适用范围,应在 “scope_groups” 中指定的应匹配此正则表达式;这很有用,当您需要仅匹配运算符或关键字或其他特定范围时;如果您需要忽略某些范围,可以指定否定前瞻(例如 (?!.*operator) - 不要匹配 “operator” 范围)
“scope_groups” - 与 “nesting” 类似,但用于 “scope” 选项(指定正则表达式组的适用范围应匹配 “scope” 选项)
“cursor” - 与 “nesting” 类似,但用于光标点(不允许指定的正则表达式组超出根据 “backward” 选项指定的光标)
“limit” - 您需要多少个匹配项
结果
匹配项列表。
注释
我发现正则表达式查找很快,但过滤很慢,大量匹配项(>2k行)可能会很慢,甚至对于简单的正则表达式也是真的。因此,在可能的情况下指定 'range' 和 'limit' 以减少执行时间。
我可能将这部分或整个库重写,以尽量减少执行时间和清理库的接口。
示例
from Expression import expression
class MyCommand(sublime_plugin.TextCommand):
def run(self, edit):
# find three last r'("|\')(\s*)(+)' before cursor where (\s*)(+) is not
# string and (+) is operator
options = {
'nesting': False,
'scope': r'operator',
'scope_groups': [2],
'string': [2, 3],
'limit': 3,
'backward': True
}
print(expression.find_matches(self.view, self.view.sel()[0].b,
r'("|\')(\s*)(+)', options))
find_match(view, cursor, expression, options = {})
描述
类似于 find_matches,但返回一个匹配项或如果没有找到匹配项则返回 None。仅作为一个辅助工具。
get_nesting(view, cursor, search_range = None, options = {}, expression = r'[({[]')
描述
获取围绕光标的括号内的位置。注意,它将返回括号内的位置,例如对于 “(value)” 位置将是 “v” 和 “)”。
参数
view - 查找括号的视图
cursor - int,查找括号的视图中的点
search_range - int 或 [int, int] 数组,用于分析多少个符号;如果有数组传入,第一个元素将用于向后计数,第二个元素将用于向前计数字节来分析
options - 包含选项的字典(如上所述描述选项)
expression - 用于查找第一个括号的正则表达式
结果
包含两个整数或如果没有找到则返回 None 的数组。
示例
from Expression import expression
class MyCommand(sublime_plugin.TextCommand):
def run(self, edit):
cursor = self.view.sel()[0].b
print(expression.get_nesting(self.view, cursor, 1024, {}, r'\('))
还有更多一些方法,但可能我会将它们添加到“废弃”中,因为没有必要使用它们。
查找和 find_match 的附加选项
查找匹配可接收“开始”和“结束”选项,这些选项控制最终的结果“开始”和“结束”位置。
该选项可以接受以下值
“开始” - (“开始”默认值)返回正则表达式的起始位置
“结束” - (“结束”默认值)返回整个正则表达式的结束位置
“首次非空” - 第一个非空组
“末次非空” - 最后一个非空组
整数 - (组号)返回指定组的起始位置
整数列表 - (组号)返回第一个非空组的起始位置
示例
_, position, _ = lookup(self.view, 0, r'\(', {"start": "end"}) # 返回下一个括号之后的起始位置
依赖项
无