1

对于上下文:我正在为 Python 编写一个片段来快速转换一个变量,如下所示:variable_footo str(variable_foo)

如果我使用$SELECTION,它工作正常。但如果我使用$TM_CURRENT_WORD,它会将替换值插入到变量文本的中间,如下所示variastr(variable_foo)ble_foo

我可以继续使用$SELECTION,但我更希望不必先使用$TM_CURRENT_WORD提供的Ctrl+D来选择变量。有什么我忽略的东西使这成为可能,还是$SELECTION是唯一的方法?

作为参考,片段的当前功能版本:${1:type}($SELECTION)${0}

还有一个替代版本:${1:type}${SELECTION/^.*/\($0\)/g}${0}

4

1 回答 1

2

我相信这是预期的行为。您可以使用插件来获得您想要的行为。

import sublime_plugin

class ExpandInsertSnippetCommand(sublime_plugin.TextCommand):
    def run(self, edit, contents=None, name=None):
        cursors = self.view.sel()
        new_cursors = []
        for cursor in cursors:
            new_cursors.append(self.view.word(cursor))
        cursors.clear()
        for cursor in new_cursors:
            cursors.add(cursor)

        self.view.run_command("insert_snippet", {"contents": contents, "name": name})

不要使用命令“insert_snippet”来进行任何绑定,而是使用“expand_insert_snippet”。

于 2013-05-06T22:57:12.317 回答