Sublimetext3 升华文本3:确认删除文件

Sublimetext3 升华文本3:确认删除文件,sublimetext3,Sublimetext3,是否有方法确认从树(左侧)中删除文件或从关联菜单中删除该选项 很容易错过,即重命名并单击删除文件。然后文件就不见了 我在谷歌上搜索了一下,发现它应该被移动到垃圾箱文件夹,但这不适用于Win7或使用网络驱动器。因此,这些文件实际上被删除或移动到了某个我至今无法找到的地方 使用升华文本(build 3083)不幸的是,无法激活确认。通常,删除的文件会移动到垃圾箱文件夹,但正如您所提到的,这仅适用于本地文件。共享网络驱动器上的文件仍会立即删除。这是Windows的“功能”:( 在本地,回收站是Wind

是否有方法确认从树(左侧)中删除文件或从关联菜单中删除该选项

很容易错过,即
重命名
并单击
删除文件
。然后文件就不见了

我在谷歌上搜索了一下,发现它应该被移动到垃圾箱文件夹,但这不适用于Win7或使用网络驱动器。因此,这些文件实际上被删除或移动到了某个我至今无法找到的地方


使用升华文本(build 3083)

不幸的是,无法激活确认。通常,删除的文件会移动到垃圾箱文件夹,但正如您所提到的,这仅适用于本地文件。共享网络驱动器上的文件仍会立即删除。这是Windows的“功能”:(

在本地,回收站是Windows资源管理器的一部分,在网络上,您不需要处理服务器上的资源管理器。本地资源管理器不会将文件复制到用户的工作站,而只是将其放入回收站


但是,您可以实现Microsofts,然后用户可以取消删除和比较版本。这是目前为止网络驱动器的唯一方法,直到sublime开发人员决定创建一个可选的确认对话框。

当我右键单击侧边栏中的一个文件选择删除时,我得到了确认。

可能是。值得一试。

重要:看一看。它说,如果修改Default.sublime-package(选项1和3),如果更新sublime文本,此更改可能会被覆盖

选项1:修改side_bar.py文件 您可以使用显示“确定/取消”对话框。您要查找的代码位于名为side_bar.py的文件中。此文件位于zip文件Default.sublime-package中。在windows中,此文件通常位于C:\Program Files\sublime Text 3\Packages\Default.sublime-package中,可以使用WinRar等程序进行浏览

在该文件中找到
DeleteFileCommand
并添加这3行新行,因此将其更改为:

class DeleteFileCommand(sublime_plugin.WindowCommand):
    def run(self, files):
        # Import send2trash on demand, to avoid initialising ctypes for as long as possible
        import Default.send2trash as send2trash
对此

class DeleteFileCommand(sublime_plugin.WindowCommand):
    def run(self, files):
        isSure = sublime.ok_cancel_dialog('Are you sure you want to delete the file?')
        if isSure != True:
            return
        # Import send2trash on demand, to avoid initialising ctypes for as long as possible
        import Default.send2trash as send2trash
我们将显示一个“确定/取消”对话框,如果用户没有按“确定”,我们将返回,并且文件不会被删除

注:

  • 您必须在类
    DeleteFolderCommand
    中添加相同的代码,以便在删除文件夹时也进行确认
  • 最好先备份默认的.sublime-package文件,以防出现问题。编辑:使用其他文件夹进行备份,否则可能会像OP在评论中所说的那样加载两次包,从而导致问题
  • 因为这是python代码缩进非常重要,所以不要 为选项卡替换任何空格,也不要添加任何额外空格,否则将无法使用 工作(您可以在控制台上看到它)
结果:

选项2:使用现有包 如中所述,您可以使用来实现目标。此软件包向文件上下文菜单添加了许多其他功能,如下图所示,但这是一个非常好的选择,因为您只需要安装现有软件包

选项3:从关联菜单中删除选项 编辑Default.subgrame-package(请参见选项1)内的Side Bar.subgrame-menu并删除此行(如果还想删除参考删除文件夹的行):

虽然的答案很好用,但我有点担心修改
Default.sublime包
,因为它可能有一天会在sublime更新时被覆盖,所以每次更新后都需要手动重新应用修复程序。另一方面,对于只想在删除文件时得到确认的人来说,可能有太多的功能e

或者,您可以通过创建一个文件(插件),添加一个简单的确认对话框,该对话框应该更能抵抗ST更新.在Linux上,它应该在
~/.config/sublime-text-3/Packages/User/confirm_delete.py
附近,如果您在Windows/Mac上,或者此路径对您不起作用,您只需从顶部菜单中选择:
工具
->
开发者
新插件
,然后另存为
确认_delete.py
-谢谢o对于该建议,请输入代码:

from Default.side_bar import *

class DeleteFileCommand(sublime_plugin.WindowCommand):
    def run(self, files):
        if len(files) == 1:
            message = "Delete File %s?" % files[0]
        else:
            message = "Delete %d Files?" % len(files)

        if sublime.ok_cancel_dialog(message, "Delete") != True:
            return

        # Import send2trash on demand, to avoid initialising ctypes for as long as possible
        import Default.send2trash as send2trash
        for f in files:
            v = self.window.find_open_file(f)
            if v != None and not v.close():
                return

            send2trash.send2trash(f)

    def is_visible(self, files):
        return len(files) > 0

此代码基本上是
DeleteFileCommand
功能的副本,来自
Default.sublime软件包
侧栏.py
与同一文件中
DeleteFolderCommand
的确认对话框相结合,因为sublime本机具有用于文件夹删除的对话框。

WTF是一个没有删除前的确认对话框。我不敢相信这一点。悲伤但真实。只是愚蠢的软件!

根据@iron77的回答,插件的路径不可能存在(在我的情况下)。更简单的方法是:

1) 单击升华文本顶栏菜单
工具
->
开发者
->
新插件

2) 粘贴片段

from Default.side_bar import *

class DeleteFileCommand(sublime_plugin.WindowCommand):
    def run(self, files):
        if len(files) == 1:
            message = "Delete File %s?" % files[0]
        else:
            message = "Delete %d Files?" % len(files)

        if sublime.ok_cancel_dialog(message, "Delete") != True:
            return

        # Import send2trash on demand, to avoid initialising ctypes for as long as possible
        import Default.send2trash as send2trash
        for f in files:
            v = self.window.find_open_file(f)
            if v != None and not v.close():
                return

            send2trash.send2trash(f)

    def is_visible(self, files):
        return len(files) > 0

3) 另存为
confirm\u delete.py

您是对的,这肯定是由SideBarEnhancements软件包引起的。谢谢!我只是觉得它有点太多了,于是选择了@sergioFC的第一个解决方案。做得很好!谢谢(用于备份
Default.sublime-package
:我将其命名为
Default-Backup.sublime-package
,在
Packages
中加载了两次,弄乱了ST3的菜单。但是与
Default.sublime-package-Backup
配合得很好。)@robbash不客气。哦,我没有想到备份在同一个文件夹中的软件包会被加载两次,我在答案中对其进行了更新。有人知道默认的
位置吗。现在ST3的升华软件包
$HOME/.config/sublime-text-3/Packages
有一个
默认的
目录(没有文件),它是空的。我现在无法测试它,但认为它在
/opt/sublime\u text/Packages/
上。然而,有人声称,如果升华文本被更新,这些更改可能会被覆盖
from Default.side_bar import *

class DeleteFileCommand(sublime_plugin.WindowCommand):
    def run(self, files):
        if len(files) == 1:
            message = "Delete File %s?" % files[0]
        else:
            message = "Delete %d Files?" % len(files)

        if sublime.ok_cancel_dialog(message, "Delete") != True:
            return

        # Import send2trash on demand, to avoid initialising ctypes for as long as possible
        import Default.send2trash as send2trash
        for f in files:
            v = self.window.find_open_file(f)
            if v != None and not v.close():
                return

            send2trash.send2trash(f)

    def is_visible(self, files):
        return len(files) > 0