Python 用于删除引号的升华文本3插件

Python 用于删除引号的升华文本3插件,python,sublimetext,sublimetext3,Python,Sublimetext,Sublimetext3,我正试图从升华文本2转换为升华文本3,但我一直遇到这个错误 File "/Users/macintoshhd/Library/Application Support/Sublime Text 3/Packages/magiclessquotesjon.py", line 17, in on_pre_save edit = view.begin_edit() TypeError: begin_edit() missing 2 required positional arguments:

我正试图从升华文本2转换为升华文本3,但我一直遇到这个错误

  File "/Users/macintoshhd/Library/Application Support/Sublime Text 3/Packages/magiclessquotesjon.py", line 17, in on_pre_save
    edit = view.begin_edit()
TypeError: begin_edit() missing 2 required positional arguments: 'edit_token' and 'cmd'
我知道API在不同版本之间发生了变化,并且存在一个错误,但我仍然不确定如何获得正确的TextCommand或如何使用它

此处的插件代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = "Daryl Tucker"

import sublime, sublime_plugin

class RemoveMagicFromMagic(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        replacements = [
            [u'[’‘`]{1}',u'\''],
            [u'[“”]{1}',u'"'],
            [u'[…]{1}',u'...'],
            [u'[—]{1}',u'---'],
            [u'[–]{1}',u'--'],
            [u'[•]{1}',u'*'],
            [u' & ',u' & '],
        ]
        edit = view.begin_edit()
        for replacement in replacements:
            x = view.find_all(replacement[0])
            for position in x:
                view.replace(edit, position, replacement[1])
        view.end_edit(edit)

通过一个额外的回调使其正常工作

class RemoveSmartQuotesCommand(sublime_plugin.TextCommand):
    def run(self, edit, user_input=None):
        self.edit = edit
        replacements = [
            [u'[’‘`]{1}',u'\''],
            [u'[“”]{1}',u'"'],
            [u'[…]{1}',u'...'],
            [u'[—]{1}',u'---'],
            [u'[–]{1}',u'--'],
            [u'[•]{1}',u'*'],
            [u' & ',u' & '],
        ]
        for replacement in replacements:
            x = self.view.find_all(replacement[0])
            for position in x:
                self.view.replace(edit, position, replacement[1])

class RemoveSmartQuotesWhenSaving(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        view.run_command('remove_smart_quotes')

供您参考:我遇到了一个类似的问题&在Sublime文本论坛上收到了一个非常好的回复,现在我非常喜欢使用
编辑
对象的标准方法。下面是线程中提到的解决方案的示例。它的实现如下:
edit=edit(view)
&
edit.replace(region,text)