Sublime Text如何用片段包装选中内容

42

我一直在研究Sublime的片段、插件和宏,但似乎找不到我想要的。

我想把这个变成:

.content {
    color: @blue;
}

转换为:

.content {
    color: darken(@blue, 5%);
}
理想情况下,我希望能够选择@blue部分,按下命令,并正确地包装整个内容。
有什么想法吗?这是否可能?

当然,您可以使用选定的文本玩各种游戏 - 您尝试过什么? - Dave Newton
不是替换,而是将变暗的5%部分包裹在@blue部分周围并添加括号。 - saltcod
我无法弄清楚关键绑定部分。我可以使用选项卡触发器使片段正常工作,但按下选项卡会删除我的选择内容!因此,它需要是一个键绑定。我想。 - saltcod
1个回答

79
如图所示这里
工具 -> 新建代码片段... -> 另存为darken.sublime-snippetData\Packages\User\目录下。
<snippet>
    <content><![CDATA[darken($SELECTION, 5%);]]></content>
    <!-- Optional: Tab trigger to activate the snippet -->
    <tabTrigger>darken</tabTrigger>
    <!-- Optional: Scope the tab trigger will be active in -->
    <scope>source.css</scope>
    <!-- Optional: Description to show in the menu -->
    <description>Darken Snippet</description>
</snippet>

并且绑定按键:
{ "keys": ["ctrl+shift+o"], 
  "command": "insert_snippet", 
  "args": { "name": "Packages/User/darken.sublime-snippet" } },

编辑: 如果您在$SELECTION之后添加$1,那么光标将跳到所选的单词或者需要写入的位置。

将上述片段的第二行改为:

<content><![CDATA[darken($SELECTION$1, 5%);]]></content>

没错。我昨天也注意到了并且有同样的想法。再次感谢,Vlakarados。非常有帮助。 - saltcod
1
我能理解你想要将选择包装在任意标签中,这对我来说很有意义。但是你真的想要这么具体的东西吗?对于这种用例来说,这似乎需要付出很多努力。 - David J.
9
更好的是:${1:$SELECTION} 选择所选内容。 - laggingreflex
很好,但对我来说,它不能与tabTrigger一起使用。选择某些内容并键入“tab”将始终用制表符替换所选内容,而不是触发代码片段。如果没有选择任何内容,则可以正确地触发它(在Mac上,Sublime 3)。 - Mark
2
您可以使用tabTrigger来创建空白片段,使用keybinding来包装所选内容。或者,如果您不想使用keybinding,也可以使用cmd+shift+P搜索所有片段。 - Deimyts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接