巧用sublime|巧用sublime,不做重复敲键的码农

marco命令
在sublime中按 ctrl+q,开始输入,完成后再次按ctrl+q完成宏的录制,之后按ctrl+shift+q即可调用,宏命令是将刚刚录制的宏保存在宏缓存中,如果想持久使用,可以将宏保存起来并绑定到相应的快捷键。
在工具栏>保存宏即可将宏保存,后结结缀.sublime-macro
编辑快捷键配置文件如下
[ {"keys": ["ctrl+alt+l"], "command": "run_macro_file", "args":{"file":"res://Packages/User/fuck.sublime-macro"}}, ]

这样,你每次按ctrl+alt+l,即可以调用之前的宏文件。
snippets
snippets是sublime中的代码段,在开发中有一些重复出现的代码,我们可以将它们收录到snippets中,然后设置一个关键置触发,而不用重复的复制粘贴。
snippets的结构如下:
xyzzysource.pythonMy Fancy Snippet

结构解析:
  • 如果想显示$,需要使用$,因为$在snippets的功能关键字,需要进行转义。
  • 间距用tab来进行
  • content必需在中,不然无法正常使用。
  • 如果要使用]]>作为文本,可以使用,]]$NOT_DEFINED>,sublime在插入前会将$NOT_DEFINED替换成空
tabTrigger:
触发关键字,在相应位置输入关键字,然后在其后按下tab键即可将代码段引入。
$PARAM1 .. $PARAMnArguments passed to the insert_snippet command. (Not covered here.) $SELECTIONThe text that was selected when the snippet was triggered. $TM_CURRENT_LINEContent of the cursor’s line when the snippet was triggered. $TM_CURRENT_WORDWord under the cursor when the snippet was triggered. $TM_FILENAMEName of the file being edited, including extension. $TM_FILEPATHPath to the file being edited. $TM_FULLNAMEUser’s user name. $TM_LINE_INDEXColumn where the snippet is being inserted, 0 based. $TM_LINE_NUMBER Row where the snippet is being inserted, 1 based. $TM_SELECTED_TEXTAn alias for $SELECTION. $TM_SOFT_TABSYES if translate_tabs_to_spaces is true, otherwise NO. $TM_TAB_SIZESpaces per-tab (controlled by the tab_size option).

区域输入:
First Name: $1 Second Name: $2 Address: $3 User name: $1

在内容区域如此使用可以用tab键切换相应位置并进行修改,如果你想多点选择,名取一样即可。默认选择完毕停留在文本末尾,当然也可以通过$0来进行设置末尾位置(镜像区域),你还可以通过如下方法来设置tab区域的默认值
First Name: ${1:Guillermo} Second Name: ${2:López} Address: ${3:Main Street 1234} User name: ${4:$TM_FULLNAME}

当然,嵌套使用完全没有问题
Test: ${1:Nested ${2:Placeholder}}
区域的正则用法:
  • 普通用法 将各个区域互相进行正则匹配,如:
Original: ${1:Hey, Joe!} Transformation: ${1/./=/g} # Output: Original: Hey, Joe! Transformation: =========

三个/中第一个区间为正则,第二个区间为要替换的内容,
i 不区分大小写 g 替换所有匹配 m 多行匹配

  • 高级应用
    可以两个区域转换大小写和,
Transformation: ${1/^(\w)|(?:_(\w))/(?1\u$1:)(?2 \u$2:)/g} Original: ${1:text_in_snail_case} # Output: Transformation: Text In Snail Case Original: text_in_snail_case

这两个区域内容可以根据所填写的规则动态的改变。你也可以使用前面说过的系统变量。
# In file MyModule.js: Transformation: ${TM_FILENAME/(\w+)\.js/\1/g} # Output: Transformation: MyModule

comletions
当我们在sublime中编写代码时, 经常能看到很多提示和,即我们经常说的自动补全,当每个字符在变化时, 自动补全的内容也会发生改变。 我们也可以自己进行编写`sublime-completions`文件 { "scope": "text.html - source - meta.tag, punctuation.definition.tag.begin","completions": [ { "trigger": "a", "contents": "$0" }, { "trigger": "abbr\t", "contents": "$0" }, { "trigger": "acronym", "contents": "$0" } ] }

这里介绍一些自动补全的编写,和snippets一样,可以使用$n来进行定位,补全后按tab按会在相应位置停留,n代表开始到按tab的次数。
在trigger中加上\t就可以实现分层效果,说不清楚,上图
{ "scope": "text.html - source - meta.tag, punctuation.definition.tag.begin", "completions": [ {"trigger": "fuc\tk", "contents": "${0:fuck}"}, ] }

上图中fuck中间加入了\t

巧用sublime|巧用sublime,不做重复敲键的码农
文章图片
示例1
他会在我们敲了fuc后进行触发,并将\t后的提示以灰色的形式显示在右边
【巧用sublime|巧用sublime,不做重复敲键的码农】注意: 如果要出现$请使用\$,需要进行转义
scope
在snippets和completions中都有一个scope的配置项,顾名思义,就是这些snippets和completions在哪些各类的文件中会生效
sublime文档地址:http://docs.sublimetext.info/en/latest/index.html

    推荐阅读