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中是如何工作的。谢谢你的帮助!
答案 0 :(得分: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;
我已经分叉了链接插件并上传了更改here
在sublime3中测试它似乎可以工作,但没有测试用例我会把那个留给你。