说明
语言无关的源代码标记化和操作的尝试
详细信息
安装次数
- 总数 2K
- Win 1K
- Mac 652
- Linux 584
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 | 0 | 0 | 1 | 3 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 1 | 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 | 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 | 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 | 0 |
README
Sublime Statement 插件(测试版)
一个令人惊叹的插件,以语言无关的方式对源代码进行标记化。仅适用于C类语言。它处于测试版,所以某些罕见情况下可能会在检测语句或标记时出错。它还为其他插件提供API来操作标记和语句。
演示
安装
此插件是sublime-enhanced插件集的一部分。您可以安装sublime-enhanced,此插件将自动安装。
如果您想单独安装此包,请检查sublime-enhanced包的“单独安装包”部分。
警告
此插件处于测试版。它可能无法正常工作。此插件仅在源代码中工作,并且仅适用于C类语言。
功能
在此插件中,“标记”这个实体的定义是变量、方法调用或值,而不是操作符、分隔符或标点符号;例如,对于“call1() + call2(call3()) + variable + 100 + true”,如果光标在任何括号之外,则标记是“call1()”、“call2(call3())”、“variable”、“100”和“true”。参数是逗号和括号之间的内容,例如,如果光标位于call1的括号中(但不在call2的括号中),则参数是“call2()”、“var1 + var2”和“true and false”。语句是由“Statement/parser.py”中的魔法组合在一起的一组标记;这里确实有魔法,为此表示歉意,我不是足够聪明来做更好的代码。
通过索引跳转到/选择标记/参数
选择当前标记/参数/语句 - 在您想要替换或复制调用参数时非常有用。按热键多次选择更多父标记。
删除当前标记/参数/语句 - 在您想要清除方法参数时非常有用
跳转到下一个标记/参数 - 对于“在标记后/前添加”用例
交换光标位置至当前标记/参数的开始或结束
交换标记/参数 - 将标记/参数移动到下一个/上一个位置
复制语句 - 创建当前语句的副本
在语句后/前创建行 - 非常方便
使用说明
标记
# before
|if call1() + call2(subcall()) + call3() # <- cursor at beginning of line
# after goto third token
if call1() + call2(subcall()) + |call3() # <- cursor at third token
# after goto previous token
if call1() + |call2(subcall()) + call3() # <- cursor at previous token
# after swap position of cursor
if call1() + call2(subcall())| + call3() # <- cursor at then end of token
# after swap token forward
if call1() + call3() + call2(subcall())| # <- cursor at then end of token
# after delete token
if call1() + call3()| # <- cursor at then end of previous token
参数
# before
root(|100, call(sub()) + var, true) # <- cursor at beginning of c
# after goto third argument
root(100, call(sub()) + var, |true) # <- cursor at third argument
# after goto previous argument
root(100, |call(sub()) + var, true) # <- cursor at previous argument
# after swap position of cursor
root(100, call(sub()) + var|, true) # <- cursor at then end of argument
# after swap argument forward
root(100, true, call(sub()) + var|) # <- cursor at then end of argument
# after delete argument
root(100, true|) # <- cursor at then end of previous argument
命令
描述 | 键盘快捷键 | 命令面板 |
---|---|---|
语句:跳转到第一个标记 | alt+ctrl+1 | 语句:跳转到第一个标记 |
语句:跳转到第二个标记 | alt+ctrl+2 | 语句:跳转到第二个标记 |
语句:跳转到第三个标记 | alt+ctrl+3 | 语句:跳转到第三个标记 |
语句:跳转到第四个标记 | alt+ctrl+4 | 语句:跳转到第四个标记 |
语句:跳转到第五个标记 | alt+ctrl+5 | 语句:跳转到第五个标记 |
语句:跳转到第一个参数 | alt+ctrl+1 | 语句:跳转到第一个参数 |
语句:跳转到第二个参数 | alt+ctrl+2 | 语句:跳转到第二个参数 |
语句:跳转到第三个参数 | alt+ctrl+3 | 语句:跳转到第三个参数 |
语句:跳转到第四个参数 | alt+ctrl+4 | 语句:跳转到第四个参数 |
语句:跳转到第五个参数 | alt+ctrl+5 | 语句:跳转到第五个参数 |
语句:选择第一个标记 | alt+shift+1 | 语句:选择第一个标记 |
语句:选择第二个标记 | alt+shift+2 | 语句:选择第二个标记 |
语句:选择第三个标记 | alt+shift+3 | 语句:选择第三个标记 |
语句:选择第四个标记 | alt+shift+4 | 语句:选择第四个标记 |
语句:选择第五个标记 | alt+shift+5 | 语句:选择第五个标记 |
语句:选择第一个参数 | alt+shift+1 | 语句:选择第一个参数 |
语句:选择第二个参数 | alt+shift+2 | 语句:选择第二个参数 |
语句:选择第三个参数 | alt+shift+3 | 语句:选择第三个参数 |
语句:选择第四个参数 | alt+shift+4 | 语句:选择第四个参数 |
语句:选择第五个参数 | alt+shift+5 | 语句:选择第五个参数 |
语句:选择标记 | alt+s | 语句:选择标记 |
语句:选择参数 | alt+shift+s | 语句:选择参数 |
语句:选择语句 | alt+ctrl+s | 语句:选择语句 |
语句:删除标记 | alt+d | 语句:删除标记 |
语句:删除参数 | alt+shift+d | 语句:删除参数 |
语句:删除语句 | alt+ctrl+d | 语句:删除语句 |
语句:跳转到下一个标记 | alt+. | 语句:跳转到下一个标记 |
语句:跳转到上一个标记 | alt+, | 语句:跳转到上一个标记 |
语句:跳转到下一个参数 | alt+shift+. | 语句:跳转到下一个参数 |
语句:跳转到上一个参数 | alt+shift+ | 语句:跳转到上一个参数 |
语句:交换标记的开始/结束位置 | alt+m | 语句:交换标记的开始/结束位置 |
语句:交换参数的开始/结束位置 | alt+shift+m | 语句:交换参数的开始/结束位置 |
语句:向前交换标记 | ctrl+alt+. | 语句:向前交换标记 |
语句:向后交换标记 | ctrl+alt+, | 语句:向后交换标记 |
语句:向前交换参数 | ctrl+alt+shift+. | 语句:向前交换参数 |
语句:向后交换参数 | ctrl+alt+shift+ | 语句:向后交换参数 |
语句:复制语句 | ctrl+shift+d | 语句:复制语句 |
语句:在语句后添加行 | ctrl+' | 语句:在语句后添加行 |
语句:在语句前添加行 | ctrl+; | 语句:在语句前添加行 |
API
语句文件下的方法(“from Statement import statement”)
is_arguments(view, point, nesting = None)
检查在指定点是否是传递的参数(由“,”分隔的项);返回布尔值。
get_root_statement(view, point)
返回包含指定点的最顶层语句嵌套的语句([开始,结束])。
get_parent_token(view, cursor, expr = r'[({[]')
返回包含指定点的父标记([开始,结束])。
get_parent_argument(view, cursor, expr = r'[({[]')
返回包含指定点的父参数([开始,结束])。
get_parent_statement(view, cursor, expr = r'[({[]')
返回包含指定点的父语句([开始,结束])。
get_tokens(view, cursor = None, statement = None)
返回指定点的标记;返回[token1, token2, …]列表;其中标记是[start, end]。
get_token(view, cursor, tokens = None)
返回指定点的标记索引和标记;如果没有找到标记返回None;返回:索引,[开始,结束]。
get_arguments(view, cursor, statement = None)
返回指定点的参数;返回[arg1, arg2, …]列表,其中arg是[start, end]列表。
get_argument(view, cursor, arguments = None)
返回指定点的参数索引和参数;如果没有找到参数返回None;返回索引,[开始,结束]。
get_assignments(view, cursor)
获取指定点的赋值信息。返回表示赋值左右部分的两个标记;返回[left, right]列表,其中left和right是[start, end]列表。
get_assignment(view, cursor, assignments = None)
获取指定点的赋值的左侧或右侧部分;返回[start, end]列表。
get_statement(view, cursor)
获取指定点的语句;返回[start, end]列表。
get_token_delete_region(view, point, tokens = None)
在给定点获取要删除的令牌时需要删除的区域;返回 sublime.Region。