当执行 CTRL + SHIFT + P 时,会有一个名为Rot13 selection
的命令允许encrpyt the selected text。
我想添加名为Rot47 selection
的命令:
selection = 'Test'
print ''.join(chr(33 + ((ord(ch) + 14) % 94)) for ch in selection)
#Output: %6DE
在SublimeText中编写此Python代码的位置,以便在 CTRL + SHIFT + P 中显示此新命令?
答案 0 :(得分:2)
您可以编写插件。
一些初学者(而非100%正确)代码可用here。
Rot47的完整插件将包含以下代码:
import sublime, sublime_plugin
class Rot47Command(sublime_plugin.TextCommand):
def run(self, edit):
for region in self.view.sel():
if not region.empty():
s = self.view.substr(region)
s = ''.join(chr(33 + ((ord(ch) + 14) % 94)) for ch in s)
self.view.replace(edit, region, s)
在哪里编写此代码?
工具> New Plugin ...将打开一个带有一些样板代码的新缓冲区。使用上面的代码替换样板,并将文件保存为rot47.py
中的/<sublime-text-dir>/Packages/User/
。
您可以使用 Ctrl + `打开控制台,然后输入view.run_command('rot47')
并点击 Enter 来测试上述插件。在运行新的Rot47命令之前,请确保您已选择了一些文本。
此外,如果要为新的rot47命令创建键盘快捷键:转到首选项&gt;键绑定 - 用户并添加以下条目:
{ "keys": ["ctrl+shift+4"], "command": "rot47" }
(您当然可以选择更有意义的组合键。)
上面的插件代码做了什么?
self.view.sel()
给出了所选文本区域的可迭代(在同一个缓冲区中可以有多个选择,去Sublime!)。区域基本上是(start_index, end_index)
对,表示选定的子字符串。 self.view.substr(region)
为您提供所需的子字符串。
然后,我们根据需要修改选择文本(变量s
),并用新文本(对self.view.replace()
的调用)替换选择。
有关更广泛的API参考,请参阅this。