Pregunta

Hay ocasiones en Sublime Text en las que 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, por lo que tengo que hacer 2 combinaciones de teclado para lograr mi objetivo cuando idealmente me gustaría solo una (soy vago).

¿Hay alguna forma de vincular varios comandos a una única combinación de teclas?p.ej.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 complemento

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) Texto sublime 2 → Preferencias → Combinaciones de teclas — Usuario

Vincularlo al acceso directo:

{ "keys": ["alt+shift+l"], "command": "reveal_in_side_bar_and_focus" }
¿Fue útil?

Solución

Actualizando la respuesta de @Artem Ivanyk.No sé que cambió en Sublime, pero esa solución no me funcionó, pero logré que funcione esto:

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 la compilación 2220.

Otros consejos

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, jisaacks desarrolló un nuevo paquete, llamado Chain of command.Su tarea principal es hacer exactamente lo que usted solicita, encadenar varios comandos a la vez.

El paquete se puede encontrar aquí:https://github.com/jisaacks/ChainOfCommand

A continuación se puede encontrar un ejemplo del funcionamiento.

Digamos que desea una combinación de teclas para duplicar el archivo actual.Puede configurar esta combinación de teclas:

{
  "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.

Tropecé con un problema similar.Al intentar grabar macros, lo que implicaba "Ahorrar" comando, consola me arrojó "Guardar comando de macros desconocidas" mensaje.Me abrí camino con el complemento elemental.

1) Herramientas → Nuevo complemento

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 utilizar la notación en mayúsculas camello para el nombre de la clase.ST2 expone esta clase para el nombre del comando con "Dominio" se eliminó el sufijo y el resto se convirtió a la notación de guión bajo minúsculo.Es decir.en este ejemplo MyChainedActionsCommand podría ejecutarse en la consola de sublime escribiendo: view.run_command("my_chained_actions")

2) Sublime Text 2 → Preferencias → Combinaciones de teclas — Usuario

Vincularlo al acceso directo:

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

Preste atención a las comas.

Echa un vistazo a esta esencia.

He estado intentando implementar esto durante mucho tiempo y lo encontré por accidente.

No olvide leer la "documentación" proporcionada.Seguí intentando que esto funcionara, hasta que me di cuenta de que no estaba pasando la clave "contexto".

Puedes crear una macro para hacer esto.Para Sublime Text, las macros son esencialmente comandos encadenados.Luego crea una combinación de teclas para esa macro.Puedes crear una macro usando Tools > Record Macro, luego ejecute sus comandos (tenga en cuenta que las macros también registran las pulsaciones de teclas, por lo que querrá usar los comandos de la barra de menú para no causar conflictos), luego Stop Recording, entonces Save Macro.Después de guardar la macro, puede volver a abrirla en Sublime Text para asegurarse de que haya grabado solo lo que desea.

Sobre la base de Artem Ivanyk respuesta, aquí hay una versión de ChainedActions que funciona con argumentos.Se necesitan dos argumentos para actions y args.Ambas son listas y cada comando de la lista se ejecuta con los argumentos correspondientes.Este ejemplo ciertamente estúpido inserta dos fragmentos: view.run_command("chained_actions", {"actions":["insert_snippet","insert_snippet"],"args":[{"contents": "($0)"},{"contenido":"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])

Intenté usar el mismo comando pero terminé con un error que cuando la carpeta del archivo ya estaba desplegada sublime movía la parte superior de la barra lateral de enfoque, donde puedo ver los archivos abiertos.Para mejorar este comportamiento, escribí un nuevo complemento que garantiza que se comportará como quiero, aquí está https://github.com/miguelgraz/FocusFileOnSidebar

Estoy usando la compilación Sublime text3 - 3083.Resuelve el problema simplemente con "Mostrarlo en la barra lateral", el enfoque se produce automáticamente.

Agregué un método abreviado de teclado personalizado para 'Mostrar en la barra lateral' agregando la siguiente declaración en Preferencias->Combinaciones de teclas-Usuario:

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

Faltaba la opción "Mostrar en la barra lateral" imagen tipos de archivos, ya que el menú contextual no aparece con el clic derecho del mouse.El método abreviado de teclado personalizado resulta útil en esta situación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top