Sublime Text 中需手动配置快捷键实现选中文本包裹为 func() 调用:在用户键位文件添加 {"keys": ["ctrl+alt+w"], "command": "insert_snippet", "args": {"contents": "${1:func}(${0:$SELECTION})"}}。
Sublime Text 里怎么用快捷键把选中文本变成
调用?
直接按
(Windows/Linux)或
(macOS),输入
是错的——那是 Emmet 的功能,对普通函数无效。真正管用的是 Sublime 自带的「Wrap Selection in Snippet」机制,但默认没绑定快捷键,得手动配。
打开
,在右侧用户键位文件里加一行:
表示光标先停在函数名位置,可直接改;
是你选中的内容,会被自动填进括号里
别用
放在开头,否则光标会跳到行首,破坏流程
为什么不能直接用「Find & Replace」批量套函数?
因为正则替换容易误伤:比如选中了
,想包成
,但若用
匹配,可能跨行吞掉换行符或注释;更糟的是,如果文本里本身就有括号(如
),正则会提前闭合,导致结果错乱。
真实场景中,
这种链式调用,用正则很难安全提取“最外层选区”
Snippet 方式不依赖上下文,只作用于当前选区,无副作用
如果真要用替换,至少得开「In Selection」开关,并用
转义字面量,但远不如 snippet 稳定
多个参数怎么快速包裹?比如把
变成
默认 snippet 只支持单个
,没法自动拆逗号分隔的多值。必须手动改 snippet 内容,或者换思路。
仿Sublime和notepad++编辑器效果
仿Sublime和notepad++编辑器效果
下载
如果选中的是逗号分隔的表达式,先用
拆成多行光标,再用
插入
占位符,最后统一补上前缀和后缀
更省事的做法:装插件
,选中
后按
,输入
,它会为每个选区生成独立调用
注意:不要依赖插件自动识别“参数个数”,Sublime 没有 AST 解析能力,所有“智能”都是基于字符串切分,遇到引号/括号嵌套就失效
包裹后光标停在哪?怎么避免每次都要手动删空格或补分号?
光标位置由 snippet 中的
决定,但很多人忘了它会被覆盖。常见坑是写成
,结果光标卡在括号里,而你其实想让它停在右括号后面写分号或逗号。
想要光标停在
里面,用
想要停在
后面,改成
(两个
是允许的,光标最终落在最后那个)
如果常要加分号,直接写进 snippet:
,但注意这会污染无分号风格的代码
Mac 用户尤其注意:系统级快捷键
是关闭窗口,别跟 snippet 快捷键冲突
实际用多了就会发现,最麻烦的不是怎么包,而是选区边界——比如你本想包
,但鼠标多拖了一格,选了
(末尾空格),那空格也会被塞进括号里。这种细节没法靠工具兜底,只能自己多看一眼。
func()Ctrl+Shift+PCmd+Shift+PWrap with AbbreviationPreferences → Key Bindings[{"keys": ["ctrl+alt+w"], "command": "insert_snippet", "args": {"contents": "${1:func}(${0:$SELECTION})"}}]${1:func}$SELECTION$0user.namesafe(user.name).*arr[0]arr[i].toString()\Q...\Ea, b, cmerge(a, b, c)$SELECTIONCtrl+Shift+LCtrl+Shift+P → Insert Snippet${0}Text Pastrya, b, cCtrl+Alt+Tmerge($1)$0${1:func}($0)func(█)${1:func}(${0:$SELECTION})func($SELECTION)█${1:func}(${0:$SELECTION})$0$0${1:func}(${0:$SELECTION});Cmd+Shift+Wfoo.barfoo.bar 