SublimeText中当前选择的ROT47

时间:2016-01-04 15:30:01

标签: sublimetext2 sublimetext sublime-text-plugin

当执行 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 中显示此新命令?

1 个答案:

答案 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)

在哪里编写此代码?

工具&gt; 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