2013-05-06 2 views
1

Для контекста: Я пишу фрагмент для Python, чтобы быстро ввести переменную, например: variable_foo - str(variable_foo).

Если я использую $ SELECTION, он отлично работает. Но если я использую $ TM_CURRENT_WORD, он вставляет значение замены в середину переменного текста, например: variastr(variable_foo)ble_foo.

Я мог бы продолжать использовать $ ВЫБОР, но я предпочел бы дополнительную легкость, не имея, чтобы выбрать переменную первой с Ctrl + D что $ TM_CURRENT_WORD обеспечит. Есть ли что-то, что я пропускаю, что делает это возможным, или $ SELECTION единственный способ пойти?

Для справки, в настоящее время функциональная версия сниппета: ${1:type}($SELECTION)${0}

И альтернативный вариант: ${1:type}${SELECTION/^.*/\($0\)/g}${0}

ответ

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».

Смежные вопросы