如何设置或查找 Sublime Text 插件的命令名称
How to set or find the command name of a Sublime Text plugin
我正在尝试为我的节点 js 服务器编写一个 ST3 插件。为了 运行 它我调用命令 view.run_command('Node js.nodejs')
.
我的 Sublime Text Packages
文件夹如下所示:
│ main.py
│ text_example_one.py
│
├───Node js
│ Nodejs.py
│
└───User
│ main.py
│ Package Control.last-run
│ Package Control.sublime-settings
│ Preferences.sublime-settings
│
└───Package Control.cache
01524fae79697630d0454ba3fabd9414
01524fae79697630d0454ba3fabd9414.info
../Packages/Node js/Nodejs.py
文件包含以下代码:
import sublime, sublime_plugin
class TryCommand(sublime_plugin.TextCommand):
def run(self, edit):
print("It's working")
self.view.insert(edit, 0, "Hello, World!")
调用 view.run_command('Node js.nodejs')
时什么也没有发生,参见 the image of the window here。
没有出现错误,但未插入 "Hello, World!"
消息,并且 "It's working"
未在控制台中打印。
view.run_command('Node js.nodejs')
命令未调用您的插件。
为了 运行 你的插件你需要调用 try
命令,例如view.run_command("try")
。以下是原因的解释:
Sublime Text 插件的命令名称源自它们的 class 名称。例如下面的 class...
class PrintHelloInConsoleCommand(sublime_plugin.TextCommand):
def run(self, edit):
print("Hello")
...可以通过调用print_hello_in_console
命令来运行。例如
// Run from a plugin or in the console
view.run_command("print_hello_in_console")
// Run from keys by adding a key binding
{"keys": ["ctrl+shift+y"], "command": "print_hello_in_console"},
// If instead of a TextCommand the plugin had been a sublime_plugin.WindowCommand
// then the following line would be needed to run the command in the console.
window.run_command("print_hello_in_console")
要从 class 名称 中获取 命令名称,首先从 class 姓名。其次,将 class 名称的剩余部分从 CamelCase
转换为 snake_case
。因此定义 class PrintHelloInConsoleCommand
的插件由 print_hello_in_console
命令 .
调用
- class 名字是:
PrintHelloInConsoleCommand
- 从 class 名称中删除 Command:
PrintHelloInConsoleCommand --> PrintHelloInConsole
- 将CamelCase转换为snake_case:
PrintHelloInConsole --> print_hello_in_console
- 要调用的命令名称是:
print_hello_in_console
你的class,class TryCommand(sublime_plugin.TextCommand)
可以通过调用try
命令运行,即view.run_command("try")
.
以下是一些其他示例:
class ClearConsoleCommand(sublime_plugin.WindowCommand)
⟶ "clear_console"
命令
class InsertDateTimeCommand(sublime_plugin.TextCommand)
⟶ "insert_date_time"
命令
class TestOKCommand(sublime_plugin.TextCommand)
⟶ ""
没有创建命令——不要使用大写的单词,例如"TestOK"
中的 "OK"
。请注意,这不会创建 "test_o_k"
命令
class MoveSelection(sublime_plugin.TextCommand)
⟶ "move_selection"
命令——尽管在 class 名称中省略了 "Command"
,这仍然有效。在撰写本文时,ST 并未严格执行该要求(但在未来的版本中可能会更改)
class AutoSaverEvents(sublime_plugin.EventListener)
⟶ ""
没有创建命令——没有调用事件侦听器,所以没有创建命令,ST 不期望 class 名称结束在 "Command"
有关插件的更多信息,请参阅 plugins section of the Sublime Text Unofficial Documentation,其中包含比官方文档更多的信息。
我正在尝试为我的节点 js 服务器编写一个 ST3 插件。为了 运行 它我调用命令 view.run_command('Node js.nodejs')
.
我的 Sublime Text Packages
文件夹如下所示:
│ main.py
│ text_example_one.py
│
├───Node js
│ Nodejs.py
│
└───User
│ main.py
│ Package Control.last-run
│ Package Control.sublime-settings
│ Preferences.sublime-settings
│
└───Package Control.cache
01524fae79697630d0454ba3fabd9414
01524fae79697630d0454ba3fabd9414.info
../Packages/Node js/Nodejs.py
文件包含以下代码:
import sublime, sublime_plugin
class TryCommand(sublime_plugin.TextCommand):
def run(self, edit):
print("It's working")
self.view.insert(edit, 0, "Hello, World!")
调用 view.run_command('Node js.nodejs')
时什么也没有发生,参见 the image of the window here。
没有出现错误,但未插入 "Hello, World!"
消息,并且 "It's working"
未在控制台中打印。
view.run_command('Node js.nodejs')
命令未调用您的插件。
为了 运行 你的插件你需要调用 try
命令,例如view.run_command("try")
。以下是原因的解释:
Sublime Text 插件的命令名称源自它们的 class 名称。例如下面的 class...
class PrintHelloInConsoleCommand(sublime_plugin.TextCommand):
def run(self, edit):
print("Hello")
...可以通过调用print_hello_in_console
命令来运行。例如
// Run from a plugin or in the console
view.run_command("print_hello_in_console")
// Run from keys by adding a key binding
{"keys": ["ctrl+shift+y"], "command": "print_hello_in_console"},
// If instead of a TextCommand the plugin had been a sublime_plugin.WindowCommand
// then the following line would be needed to run the command in the console.
window.run_command("print_hello_in_console")
要从 class 名称 中获取 命令名称,首先从 class 姓名。其次,将 class 名称的剩余部分从 CamelCase
转换为 snake_case
。因此定义 class PrintHelloInConsoleCommand
的插件由 print_hello_in_console
命令 .
- class 名字是:
PrintHelloInConsoleCommand
- 从 class 名称中删除 Command:
PrintHelloInConsoleCommand --> PrintHelloInConsole
- 将CamelCase转换为snake_case:
PrintHelloInConsole --> print_hello_in_console
- 要调用的命令名称是:
print_hello_in_console
你的class,class TryCommand(sublime_plugin.TextCommand)
可以通过调用try
命令运行,即view.run_command("try")
.
以下是一些其他示例:
class ClearConsoleCommand(sublime_plugin.WindowCommand)
⟶"clear_console"
命令class InsertDateTimeCommand(sublime_plugin.TextCommand)
⟶"insert_date_time"
命令class TestOKCommand(sublime_plugin.TextCommand)
⟶""
没有创建命令——不要使用大写的单词,例如"TestOK"
中的"OK"
。请注意,这不会创建"test_o_k"
命令class MoveSelection(sublime_plugin.TextCommand)
⟶"move_selection"
命令——尽管在 class 名称中省略了"Command"
,这仍然有效。在撰写本文时,ST 并未严格执行该要求(但在未来的版本中可能会更改)class AutoSaverEvents(sublime_plugin.EventListener)
⟶""
没有创建命令——没有调用事件侦听器,所以没有创建命令,ST 不期望 class 名称结束在"Command"
有关插件的更多信息,请参阅 plugins section of the Sublime Text Unofficial Documentation,其中包含比官方文档更多的信息。