Подтвердить что ты не робот

Можно ли связать команды привязки ключей в возвышенном тексте 2?

В Sublime Text есть моменты, когда я хочу показать текущий файл на боковой панели, а затем перемещаться по структуре папок.

Это может быть достигнуто с помощью команд reveal_in_side_bar и focus_side_bar, однако они должны быть связаны с двумя отдельными комбинациями клавиш, поэтому я должен сделать 2 комбинации клавиш для достижения своей цели, когда в идеале я хотел бы только один (I ленив).

Можно ли связать несколько команд с одной комбинацией клавиш? например что-то вроде этого:

{
  "keys": ["alt+shift+l"], 
  "commands": ["reveal_in_side_bar", "focus_side_bar"]
},

Решение

На основании ответов @artem-ivanyk и @d_rail

1) Инструменты → Новый плагин

import sublime, sublime_plugin

class RevealInSideBarAndFocusCommand(sublime_plugin.WindowCommand):
    def run(self):
        self.window.run_command("reveal_in_side_bar")
        self.window.run_command("focus_side_bar")

Сохранить как RevealInSideBarAndFocus.py

2) Sublime Text 2 → Preferences → Key Bindings - Пользователь

Привяжите его к ярлыку:

{ "keys": ["alt+shift+l"], "command": "reveal_in_side_bar_and_focus" }
4b9b3361

Ответ 1

Обновление ответа @Artem Ivanyk. Я не знаю, что изменилось в Sublime, но это решение не сработало для меня, но я получил это для работы:

import sublime, sublime_plugin

class RevealInSideBarAndFocusCommand(sublime_plugin.WindowCommand):
    def run(self):
        self.window.run_command("reveal_in_side_bar")
        self.window.run_command("focus_side_bar")

.

{ "keys": ["ctrl+shift+8"], "command": "reveal_in_side_bar_and_focus" }

Btw, я использую Build 2220

Ответ 2

Хотя вопрос - год, это может помочь людям, которые все еще ищут ответ.

Недавно новый пакет был разработан jisaacks под названием Chain of command. У него есть основная задача выполнить именно то, что вы запрашиваете, для сразу нескольких команд.

Пакет можно найти здесь: https://github.com/jisaacks/ChainOfCommand

Пример работы приведен ниже.

Скажем, вам нужна привязка ключа для дублирования текущего файла. Вы можете установить эту привязку ключа:

{
  "keys": ["super+shift+option+d"], 
  "command": "chain", 
  "args": {
    "commands": [
      ["select_all"],
      ["copy"],
      ["new_file"],
      ["paste"],
      ["save"]
    ]
  }
}

Это позволит выделить весь текст, скопировать его, создать новый файл, вставить текст и открыть диалог сохранения файла.

Источник: https://sublime.wbond.net/packages/Chain%20of%20Command.

Ответ 3

Наткнулся на подобную проблему. При попытке записи макросов, в которых задействована команда "Сохранить" , консоль бросила на меня сообщение <Неизвестный макрос команды save ". Работала с элементарным плагином.

1) Инструменты → Новый плагин

import sublime, sublime_plugin

class MyChainedActionsCommand():
    def run(self):
        self.view.run_command("reveal_in_side_bar")
        self.view.run_command("focus_side_bar")

Вам нужно использовать нотацию верхнего верблюда для названия класса. ST2 предоставляет этот класс для имени команды с суффиксом "Command", а остальная часть преобразуется в нижнюю строчную обозначение. Я. в этом примере MyChainedActionsCommand может быть запущен в строгой консоли: view.run_command("my_chained_actions")

2) Sublime Text 2 → Preferences → Key Bindings - Пользователь

Привяжите его к ярлыку:

{ "keys": ["alt+shift+l"], "command": "my_chained_actions" }

Запятые запятые.

Ответ 4

Взгляните на этот смысл.

Я пытался реализовать это за долгое время и нашел это случайно.

Не забудьте прочитать предоставленную "документацию". Я продолжал пытаться выполнить эту работу, пока не переработал. Я не передавал ключ контекста.

Ответ 5

Вы можете создать макрос для этого. Для Sublime Text макросы - это, по сути, только цепочки команд. Затем вы создаете привязку для этого макроса. Вы можете создать макрос с помощью Tools > Record Macro, а затем выполнить свои команды (остерегайтесь того, что макросы записывают нажатия клавиш, поэтому вы хотите использовать команды из строки меню, чтобы не вызвать конфликты), затем Stop Recording, затем Save Macro. После сохранения макроса вы можете открыть его в Sublime Text, чтобы убедиться, что он записал только то, что вы хотите.

Ответ 6

На основе Артем Иванык ответьте, вот версия ChainedActions, которая работает с аргументами. Для actions и args требуется два аргумента. Оба являются списками, и каждая команда в списке выполняется с соответствующими аргументами. Этот, по общему признанию, глупый пример вставляет два фрагмента: view.run_command("chained_actions", {"actions":["insert_snippet","insert_snippet"],"args":[{"contents": " ($ 0) "}, {" contents ":" 1 ($ 0) "}]})`

import sublime
import sublime_plugin

class ChainedActionsCommand(sublime_plugin.TextCommand):
    def run(self, edit, actions, args):
        for i, action in enumerate(actions):
            self.view.run_command(action, args[i])

Ответ 7

Я попытался использовать ту же команду, но в итоге у меня возникла ошибка: когда папка с файлом уже развернута, возвышенный переместил мою боковую панель фокуса, где я вижу открытые файлы. Чтобы улучшить это поведение, я написал новый плагин, который гарантирует, что он будет вести себя так, как я хочу, здесь https://github.com/miguelgraz/FocusFileOnSidebar

Ответ 8

Я использую Sublime text3 build - 3083. Он решает проблему, просто "Покажите ее в боковой панели", фокус приходит автоматически.

Я добавил специальную комбинацию клавиш для "Reveal in sidebar", добавив следующую инструкцию в разделе "Preferences- > Key Bindings-User:

[
    { "keys": ["ctrl+shift+r"], "command": "reveal_in_side_bar"}
]

Параметр "Показывать на боковой панели" отсутствует для типов файлов image, поскольку контекстное меню не отображается с правым щелчком мыши. В этой ситуации удобная комбинация клавиш удобна.