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代码缩进非常重要,所以不要 为选项卡替换任何空格,也不要添加任何额外空格,否则将无法使用 工作(您可以在控制台上看到它)
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