5

Sublime Text 3 看起来很棒,但让我无法切换的一项是Clipboard Commands的兼容性。我使用这个插件的唯一目的是“clean_paste”功能,它基本上可以从 Microsoft Word(或任何其他文本编辑器)中粘贴复制的内容,去掉它通常附带的有趣字符。有谁知道 ST3 提供的可以将键绑定映射到的本机功能?这是 ClipboardCommand 的作用(在 ST2 版本中):

class ClipboardCommandsPastePlainText(sublime_plugin.TextCommand):
    def run(self, edit):
        copy(clean_paste(clipboard()))
        self.view.run_command('paste')

一般来说,可能更多的是一个 Python 问题,但您也可以创建自己的键绑定,这个基本上只是引用该命令:

"caption": "Clipboard: Paste Plain Text",
"command": "clipboard_commands_paste_plain_text"

所以如果command我可以把那个函数放进去就好了,但不确定它在 Python 中是如何工作的。谢谢你的帮助!

4

1 回答 1

4

使这个 python 3 兼容不需要太多工作:

# coding=utf8
import sublime_plugin, sublime, re, html

def clipboard():
    return sublime.get_clipboard()

def copy(data):
    sublime.set_clipboard(data)

# to transfer data to sublime text
def clean_paste(data):
    # clean word
    data = str(data)
    data = data.replace(u'”', '"').replace(u'“', '"').replace(u'’', "'")
    data = data.replace('________________________________________', '\n')
    # clean htmlentities
    data = re.sub('&([^;]+);', lambda m: unichr(html.entities.name2codepoint[m.group(1)]), data)
    return data;

# to transfer data from sublime text
def clean_copy(data):
    # clean html
    data = str(data)
    data = re.sub(r'<br ?/?>', '\n', data, re.I);
    data = re.sub(r'<[^>]*>', '', data);
    # clean htmlentities
    data = re.sub('&([^;]+);', lambda m: unichr(html.entities.name2codepoint[m.group(1)]), data)
    return data;

我已经分叉了链接的插件并在此处上传了更改

在 sublime3 中对其进行了测试,它似乎可以工作,但是如果没有测试用例,我将把它留给你。

于 2013-10-29T22:58:19.163 回答