Acme Plumbing
使文本可点击(Sublime Text 3)
详细信息
安装次数
- 总计 5K
- Win 3K
- Mac 818
- Linux 572
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Mac | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Readme
AcmePlumbing
使文本可点击
什么是
- 在 https://www.google.com/search?q=Acme+Editor 上右键单击,并在您的浏览器中打开谷歌搜索。
- 在 Commands.py@prepare_command 上右键单击,打开 Commands.py 以准备命令的定义。
- 右键单击 pydoc(re) 来查看 Python 正则表达式的帮助。
- 右键单击 shutdown,您的计算机将关闭(让您疑惑为什么您设置了最后一个)。
为什么
我尝试了 Acme 编辑器,并发现它将文本视为 UI 的一部分很有趣。然而,我想要在一个我更舒适的(且在 Windows 上运行良好)的环境中玩耍。此外,我真的想能够将文件链接起来作为一个临时的维基。
怎么做
使用鼠标右键选择文本。选定的文本被放入消息中作为数据,然后传递给一组命令(一个规则)。命令从第一个到最后一个进行评估,如果一个失败,则规则停止处理,并尝试下一个规则。
如果您只想选择一个单词,您可以通过在单词中间右键单击来节省精力。这将导致 AcmePlumbing 沿着单词边界扩展选择。
配置
查看 AcmePlumbing (Linux).sublime-settings
每个规则是一组要运行的命令列表。您可以通过将其包裹在列表中向命令传递额外的参数。
[
"is_file",
[ "pattern", "\.txt$"],
"open_in_tab"
]
当消息传递给此规则时,第一条命令检查消息数据是否指向一个文件。如果是文件,则执行下一条命令,否则规则退出。然后第二条命令将消息数据与正则表达式进行比较。此命令将正则表达式作为参数。在这种情况下,它测试文件是否为.txt文件。如果通过,则将消息传递给open_in_tab命令,在新标签页中打开消息数据中引用的文件。
注意:管道中的命令可以自由修改消息(如果规则失败,消息将设置回原始值以便下一个规则使用)
命令
模式
查看Commands.py@模式
将数据与第二个参数中指定的正则表达式进行比较。结果存储在match_data中,允许操作管道使用数据的片段。
is_file
查看Commands.py@is_file
is_file测试消息数据是否引用文件。如果失败,它将尝试使用消息中设置的工作目录作为相对路径再次测试。如果找到文件,则将消息数据设置为完整路径。
is_dir
查看Commands.py@is_dir
is_dir测试消息数据是否引用目录。与is_file类似,如果失败,它将尝试使用消息中设置的工作目录作为相对路径再次测试。如果找到目录,则将消息数据设置为完整路径。
list_dir
查看Commands.py@list_dir
list_dir假设消息数据是目录的路径,并将其列出。目录中的每个项目都展开为其完整路径,并用换行符分隔。消息数据被替换为项目列表。
extract_jump
查看Commands.py@extract_jump
这个测试与其他不同,它总是通过。其目的是从数据中移除跳转位置并存储在单独的位置(match_data),以免干扰后续测试。这非常重要,因为它使is_file不必知道如何跳转到文件中的位置,并且它可以专注于仅测试文件是否存在。
查看Commands.py@jump了解跳转的语法
prepare_command
查看Commands.py@prepare_command
prepare_command基于匹配管道的结果替换数据中的文本。在基本的情况下 $\_ 正被替换为消息数据的内容(您点击的文本)。
模式
模式测试的结果可以用组位置(例如 $1)或组名称(例如 $section)来替换
open_in_tab
查看Commands.py@open_in_tab
open_in_tab在新标签页中打开消息['data']中的任何内容。如果存在具有该路径的文件,它将打开该文件。否则,它假定数据是shell命令。它将运行该命令,如果有输出,它将放置在新标签页中。例如,此规则用于打开man页面。
display_data_in_new_tab
查看Commands.py@display_data_in_new_tab
display_data_in_new_tab创建一个新标签页并将消息数据的内容输出到其中。
jump
查看Commands.py@jump
jump使用extract_jump的结果并移动到新位置。它使用与“转到任何位置”类似的语法。
- strong @ 选择符号
- : 选择文本
- : 选择行
open_in_external_process
查看Commands.py@open_in_external_process
open_in_external_process假定消息数据是命令并运行它。不打开新标签页。这主要用于像URL这样的规则,您希望它们在浏览器中打开,而不是在文本编辑器中打开。
extern
查看Commands.py@extern
extern运行外部模块中定义的命令。第一个参数是模块名,第二个是函数,其余参数是参数。
["extern", "ExternalPlugin.Module", "custom_command", "arg1", "arg2", "arg3"]
print_pipeline
查看Commands.py@print_pipeline
print_pipeline 将在管道的该点将消息和管道数据输出到控制台。这在调试管道时非常有用。
扩展
消息
消息的结构如下
{
"data": "the selected text",
"cwd": "the parent directory of the current file",
"src": "the view id",
"edit_token": "the edit token used for editing views"
}
创建新命令
您可以在用户目录中的 AcmePlumbingCommands.py 中创建自定义命令。每个动作都是一个具有以下签名的函数
def custom_command(message, arguments, pipeline_data):
return True
如果命令成功,则命令必须返回一个真值。否则,规则将被视为失败,并且将运行下一个规则。
然后您可以通过在规则集中以函数名称引用它们来使用它们
[ "custom_command" ]
返回值放入 pipeline_data,这是一个包含规则中所有先前命令结果的字典。
从另一个插件调用
您可以使用 SublimeAcmePlumbing.AcmePlumbing.add_rule (AcmePlumbing.py@add_rule) 将规则注入到管道中。这可以与“extern”命令结合使用来调用在另一个模块(例如另一个插件)中定义的命令。规则保存在 用户 设置中,以便用户可以调整它并控制其在管道中的位置。附加规则具有密钥以便在规则已存在时更新规则,因此它们应该是唯一的。
参见 AcmePlumbing.py@add_rule
def add_rule(key, comment, rule)
规则以以下格式保存
// key
// comment
[
"rule"
],
示例
OtherPlugin.Plumbing.py
import sublime
from AcmePlumbing import AcmePlumbing
def greet(message, args, match_data):
window = sublime.active_window()
tab = window.new_file()
tab.set_scratch(True)
edit_token = message['edit_token']
tab.insert(edit_token, 0, "Hello. How's the weather?")
return tab
def plugin_loaded():
AcmePlumbing.add_rule("OtherPlugin.greet",
"Ask about the weather",
["extern", "OtherPlugin.Plumbing", "greet"])
此插件设置了管道,以便您可以右键单击任何内容以打开一个询问您天气的新标签页
常见问题解答 (FAQ)
我的上下文菜单在哪里?
由于 Acme Plumbing 绑定到右键鼠标,因此您通常无法访问右键菜单。别慌张:它只需按下 shift + 右键即可。
但是,如果您不想在右键鼠标上使用 Acme Plumbing,您可以将它移动到中键鼠标,方法是在 Users 包的目录中的 Default.sublime-mousemap 中放入以下内容。
[
{
"button": "button2", "count": 1, "modifiers": [],
"press_command": "context_menu"
},
{
"button": "button3", "count": 1, "modifiers": [],
"command": "acme_plumbing_send",
"press_command": "drag_select"
},
]
许可证
MIT