Sublime Text 3 - 如何向Sublime控制台发送命令

3
我想扩展Sublime的功能,使我能够将任何应用程序中的文本发送到活动的Sublime Text窗口。我意识到可以通过以下命令从Sublime Console中添加文本: view.run_command("insert", {"characters": "Hello World!"}) 现在,我想知道是否有内置的解决方案可以从外部应用程序执行sublime控制台命令,例如,命令行接口以接受外部命令?否则,我考虑设置Python运行Socket服务器来侦听命令并以此方式接受输入?
有什么想法吗?
谢谢!
1个回答

5
< p > Sublime自带的subl命令允许您从命令行执行任意命令: < /p >
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 命令则针对当前的windowsubl命令是一个帮助程序,将其命令行参数传递给正在运行的Sublime实例并终止;如果Sublime尚未运行,则首先启动Sublime,然后再传递参数。
如果Sublime尚未运行,则 --command 参数将不起作用,因为 subl 会在Sublime启动时立即提供该参数,但是它需要一些时间才能让插件主机可用于命令(在Sublime中,您会看到这在控制台中显示为plugins loaded消息)。
因此,重要的是您要么确保在执行此操作之前Sublime正在运行,要么先启动Sublime,等待一秒钟左右,然后再提供命令。

好的回答。你应该对比一下3211版本的输出,确保所有命令都是相同的。我知道--safe-mode是新功能,但其他功能我不确定。 - MattDMo
@MattDMo 哦,好发现,谢谢;--command早就存在了,但是将其保留在当前发布的版本中绝对是个好主意。 - OdatNurd
我在Windows环境下无法获得预期的结果。它给我返回了一个解析命令错误:subl.exe --command "insert {'characters': 'Hello, World'}" subl.exe --command "insert({'characters': 'Hello, World'})"无法解析命令:insert {'characters': 'Hello, World'} 无法解析命令:insert({'characters': 'Hello, World'}) - flyeris
似乎在 Powershell 环境下无法正常工作,但是从命令提示符中运行一切都很好。感谢您发现这个问题并为我的使用提供了最佳解决方案! - flyeris
在Windows CMD上对我不起作用。我在终端中收到以下错误:无法解析命令:insert {"characters": "Hello - Unknow0059
它在这里可以工作;你是否使用了实际的 cmd?不同的 shell 需要不同的引用方式;例如,在 PowerShell 中需要进行微调。 - OdatNurd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接