【问题标题】:Sublime Text 3 - ?send commands to sublime consoleSublime Text 3 - 发送命令到 sublime 控制台
【发布时间】:2020-05-19 22:42:32
【问题描述】:

我想扩展 Sublime 的功能,让我可以将文本从任何应用程序发送到活动的 Sublime Text 窗口。我意识到可以使用以下命令从 Sublime 控制台添加文本:

view.run_command("insert", {"characters": "Hello World!"})

现在我想知道是否有任何内置解决方案可以从外部应用程序执行 sublime 控制台命令,例如。命令行界面接受外部命令?否则,我正在考虑是否应该可以设置 Python 来运行 Socket 服务器来侦听命令并以这种方式接受输入?

有什么想法吗?

谢谢!

【问题讨论】:

    标签: python sublimetext3 sublimetext sublime-text-plugin


    【解决方案1】:

    Sublime 附带的subl 命令允许您从命令行执行任意命令:

    tmartin:dart:~> subl --help
    Sublime Text build 3211
    
    Usage: subl [arguments] [files]         Edit the given files
       or: subl [arguments] [directories]   Open the given directories
    
    Arguments:
      --project <project>: Load the given project
      --command <command>: Run the given command
      -n or --new-window:  Open a new window
      -a or --add:         Add folders to the current window
      -w or --wait:        Wait for the files to be closed before returning
      -b or --background:  Don't activate the application
      -h or --help:        Show help (this message) and exit
      -v or --version:     Show version and exit
    
    Filenames may be given a :line or :line:column suffix to open at a specific
    location.
    

    --command 参数要求您在一个参数中提供命令和所需的所有参数;例如:

    tmartin:dart:~> subl --command "insert {\"characters\": \"Hello, World\"}"
    

    这适用于任何命令,就像 Sublime 控制台一样,TextCommand 命令以当前 view 为目标,WindowCommand 命令以当前 window 为目标。

    subl 命令是一个助手,它将命令行参数提供给正在运行的 Sublime 实例并终止;如果 Sublime 尚未运行,它会先启动 Sublime,然后传递参数。

    如果 Sublime 尚未运行,--command 参数将不起作用,因为 subl 在 Sublime 启动后立即提供参数,但插件主机需要一些时间才能对命令可用(在 Sublime 中,您会在控制台中看到这发生为 plugins loaded 消息)。

    所以,重要的是你要么确保 Sublime 在运行之前运行,要么先启动 Sublime,等待一秒钟左右,然后提供命令。

    【讨论】:

    • 好答案。您可能应该仔细检查 Build 3211 的输出,以确保所有命令都相同。我知道--safe-mode 是新的,我不确定其他功能。
    • @MattDMo 很好,谢谢; --command 一直存在,但将其保留到当前发布的版本绝对是个好主意。
    • 我无法在 Windows 环境中得到预期的结果。它导致我在解析命令时出错: subl.exe --command "insert {'characters': 'Hello, World'}" subl.exe --command "insert({'characters': 'Hello, World'}) " 无法解析命令:插入 {'characters': 'Hello, World'} 无法解析命令:insert({'characters': 'Hello, World'})
    • 它似乎在 Powershell 环境中不起作用,但从命令提示符运行后一切正常。感谢您找到这个可能是我使用的最佳解决方案!
    • 在 Windows CMD 上对我不起作用。我在终端中收到以下错误:Unable to parse command: insert {"characters": "Hello.
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2014-05-29
    • 2014-10-20
    • 1970-01-01
    • 2016-04-13
    • 2016-07-12
    • 2017-01-14
    • 2012-05-23
    相关资源
    最近更新 更多