keyboard-shortcuts - run - sublime text 3 shortcuts cheat sheet
¿Es posible encadenar comandos de enlace de clave en texto sublime 2? (8)
Actualizando la respuesta de @Artem Ivanyk. No sé qué cambió en Sublime, pero esa solución no funcionó para mí, pero conseguí que esto funcionara:
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" }
Por cierto, estoy usando Build 2220
Hay veces en el texto sublime cuando quiero revelar el archivo actual en la barra lateral y luego navegar por la estructura de carpetas.
Esto se puede lograr usando los comandos reveal_in_side_bar
y focus_side_bar
sin embargo, tienen que estar vinculados a dos combinaciones de teclas separadas, así que tengo que hacer 2 combinaciones de teclado para lograr mi objetivo cuando lo ideal es que me gustaría solo una (soy perezoso).
¿Hay alguna forma de enlazar varios comandos a una combinación de teclas única? por ejemplo, algo como esto:
{
"keys": ["alt+shift+l"],
"commands": ["reveal_in_side_bar", "focus_side_bar"]
},
Solución
Basado en las respuestas de @ artem-ivanyk y @ d_rail
1) Herramientas → Nuevo Plugin
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")
Guardar como RevealInSideBarAndFocus.py
2) Sublime Text 2 → Preferences → Key Bindings - User
Enlazarlo al atajo:
{ "keys": ["alt+shift+l"], "command": "reveal_in_side_bar_and_focus" }
Aunque la pregunta tiene un año de antigüedad, esto podría ayudar a las personas que todavía están buscando una respuesta.
Recientemente, un nuevo paquete fue desarrollado por jisaacks, llamado Chain of command
. Tiene la tarea principal de hacer exactamente lo que solicita, encadenar varios comandos a la vez.
El paquete se puede encontrar aquí: https://github.com/jisaacks/ChainOfCommand
Un ejemplo del trabajo se puede encontrar a continuación.
Digamos que quería un enlace de clave para duplicar el archivo actual. Usted podría establecer este enlace clave:
{
"keys": ["super+shift+option+d"],
"command": "chain",
"args": {
"commands": [
["select_all"],
["copy"],
["new_file"],
["paste"],
["save"]
]
}
}
Esto seleccionaría todo el texto, lo copiaría, crearía un nuevo archivo, pegaría el texto y luego abriría el cuadro de diálogo para guardar el archivo.
Fuente: https://sublime.wbond.net/packages/Chain%20of%20Command .
Echa un vistazo a esta esencia .
He estado tratando de implementar esto en mucho tiempo y lo encontré por accidente.
No olvides leer la "documentación" provista. Seguí intentando hacer que esto funcionara, hasta que me di cuenta de que no estaba pasando la clave de "contexto".
Estoy usando Sublime text3 build - 3083. Resuelve el problema solo con ''Revelarlo en la barra lateral'', el enfoque viene automáticamente.
He agregado un método abreviado de teclado personalizado para ''Revelar en la barra lateral'' al agregar la siguiente declaración en Preferencias-> Enlaces de teclas-Usuario:
[
{ "keys": ["ctrl+shift+r"], "command": "reveal_in_side_bar"}
]
La opción "Revelar en barra lateral" faltaba para los tipos de archivos de imagen , ya que el menú contextual no aparece con el clic derecho del mouse. El atajo de teclado personalizado es útil en esta situación.
Intenté usar el mismo comando, pero terminé con un error que cuando la carpeta del archivo ya estaba desplegada, sublime movió la parte superior de mi barra lateral de enfoque, donde puedo ver los archivos abiertos. Para mejorar este comportamiento, he escrito un nuevo complemento que garantiza que se comportará como quiero, aquí está https://github.com/miguelgraz/FocusFileOnSidebar
Puedes crear una macro para hacer esto. Para texto sublime, las macros son esencialmente comandos encadenados. Luego creas un enlace de teclas para esa macro. Puede crear una macro usando Tools > Record Macro
, luego ejecutando sus comandos (tenga cuidado de que las macros también graben las pulsaciones de teclas, así que querrá usar los comandos de la barra de menú para no causar conflictos), luego Stop Recording
y luego Save Macro
Después de guardar la macro, puede abrirla de nuevo en Sublime Text para asegurarse de que grabó solo lo que desea.
Sobre la base de la respuesta de Artem Ivanyk , aquí hay una versión de ChainedActions que funciona con argumentos. Se necesitan dos argumentos para actions
y argumentos. Ambas son listas y cada comando de la lista se ejecuta con los argumentos correspondientes. Este ejemplo admitidamente estúpido inserta dos fragmentos: view.run_command("chained_actions", {"actions":["insert_snippet","insert_snippet"],"args":[{"contents": "
($ 0)"), {" contenidos ":" 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])
Tropezó con un problema similar. Al intentar grabar macros, que implicaban el comando "Guardar" , la consola me lanzó el mensaje "Guardar macros comando desconocido" . Trabajé a mi manera con el complemento elemental.
1) Herramientas → Nuevo Plugin
import sublime, sublime_plugin
class MyChainedActionsCommand():
def run(self):
self.view.run_command("reveal_in_side_bar")
self.view.run_command("focus_side_bar")
Debe usar la notación de la caja superior del camello para el nombre de la clase. ST2 expone esta clase para el nombre del comando con el sufijo „Comando“ eliminado y el resto se convierte a la notación de subrayado en minúscula. Es decir, en este ejemplo, MyChainedActionsCommand
se puede ejecutar en la consola de sublime escribiendo: view.run_command("my_chained_actions")
2) Sublime Text 2 → Preferences → Key Bindings - User
Enlazarlo al atajo:
{ "keys": ["alt+shift+l"], "command": "my_chained_actions" }
Prestar atención a las comas