Можно ли связать команды привязки ключей в возвышенном тексте 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" }
Ответы
Ответ 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, поскольку контекстное меню не отображается с правым щелчком мыши. В этой ситуации удобная комбинация клавиш удобна.