有没有办法确认从树(左侧)删除文件或从上下文菜单中删除该选项?
很容易错过rename
并点击delete file
。然后文件就消失了。
我用谷歌搜索,发现它应该被移动到垃圾文件夹,但要么不适用于Win7,要么使用网络驱动器。结果,文件实际上被删除或移动到目前为止我无法跟踪它们的地方。
使用Sublime Text(build 3083)
答案 0 :(得分:7)
您可以使用sublime API来显示确定/取消对话框。您要查找的代码位于名为 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
中添加相同的代码,以便在删除文件夹时进行确认。结果:
正如user leesei中his answer所述,您可以使用SideBarEnhancements package来实现目标。此软件包在文件上下文菜单中添加了许多其他功能,如下图所示,但它是一个非常好的选择,因为您只需要安装一个现有的软件包。
在 Default.sublime-package 中编辑 Side Bar.sublime-menu (参见选项1)并删除此行(如果你想要删除该行,则需要删除该行删除文件夹):
{ "caption": "Delete File", "command": "delete_file", "args": {"files": []} },
答案 1 :(得分:2)
当我通过右键单击SideBar中的文件选择删除时,我会收到确认 也许是SideBarEnhancements。值得一试。
答案 2 :(得分:1)
虽然sergioFC的答案很有效,但我有点担心修改Default.sublime-package
,因为有可能在Sublime更新时有一天会被覆盖,所以修复需要每次更新后手动重新应用。另一方面,SideBarEnhancements可能对于在删除文件时只想要确认的人来说功能太多。
或者,您可以通过创建一个文件(插件)~/.config/sublime-text-3/Packages/User/confirm_delete.py
添加一个更能抵抗ST更新的简单确认对话框,其中包含以下内容:
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-package
的{{1}}函数的副本,以及来自同一文件的side_bar.py
的确认对话框,如Sublime所拥有的此类对话框原生于文件夹删除。
答案 3 :(得分:1)
WTF删除前没有确认对话框的软件。我真不敢相信悲伤但真实。只是愚蠢的软件!
答案 4 :(得分:0)
不幸的是,没有办法激活确认。通常,已删除的文件将移动到垃圾文件夹,但正如您所提到的,这仅适用于本地文件。共享网络驱动器上的文件仍会立即删除。这是一个Windows'功能' :(
本地回收站是Windows资源管理器的一部分 - 在网络上,您不会在服务器上处理资源管理器。本地资源管理器不会将文件复制到用户的工作站,只是为了将其放入回收站。
然而,您可以实现微软Shadow Copy,然后用户可以取消删除并比较版本。到目前为止,这是网络驱动器的唯一方法,直到sublime开发人员决定进行可选的确认对话框。
答案 5 :(得分:0)
根据@ iron77的回答,插件路径不存在(在我的情况下)。一种更简单的方法是:
1)单击“崇高文本”顶部栏菜单Tools
-> Developer
-> New Plugin
。
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_delete.py
。