Python 升华文本:如何获取当前视图的文件名

Python 升华文本:如何获取当前视图的文件名,python,plugins,sublimetext2,filenames,delete-file,Python,Plugins,Sublimetext2,Filenames,Delete File,我正在尝试编写一个小插件来删除当前文件并关闭活动视图。 由于某些原因,self.view.file_name()始终不返回任何值 我是Python新手,不知道为什么它不能这样工作。根据文件名,返回当前视图的文件名 import sublime, sublime_plugin, send2trash class DeleteCurrentFileCommand(sublime_plugin.TextCommand): def run(self, edit):

我正在尝试编写一个小插件来删除当前文件并关闭活动视图。 由于某些原因,self.view.file_name()始终不返回任何值

我是Python新手,不知道为什么它不能这样工作。根据文件名,返回当前视图的文件名

import sublime, sublime_plugin, send2trash

class DeleteCurrentFileCommand(sublime_plugin.TextCommand):
    def run(self, edit):        
        f = self.view.file_name()
        if (f is None):
            return

        send2trash.send2trash(f)
        self.view.window().run_command('close')
目录(self.view)的输出:

[“class”、“delattr”、“dict”、“doc”、“format”、“getattribute”、“散列”、“init”、“len”、“module”、“new”、“reduce”、reducereducereducetrong>repr、“setattr”、“sizeof”、“str”、“weakref”、“添加区域”、“开始编辑”、“缓冲区id”、“分类”、“命令历史”、“em\u宽度”、“编码”、“结束编辑”、“擦除”、“擦除区域”、“擦除状态”、“提取完成”、“提取范围”“文件名”、“查找”、“查找全部”、“查找全部结果”、“按选择器查找”、“折叠”、“折叠区域”、“整行”、“获取区域”、“获取状态”、“获取符号”、“具有非空的选择区域”、“id”、“缩进级别”、“缩进区域”、“插入”、“是脏的”、“是折叠的”、“是加载的”、“是只读的”、“是刮擦的”、“布局范围的大小”、“布局的大小”xt、line、line、line_endings、line_height、lines、match_selector、meta_info、name、replace、retarget、rowcol、run_命令、scope_name、score_selector、sel、set_endings、set_line_endings、set_name、set_name、set_只读、set_scratch、set_status、set_语法_文件、set_视口_位置、set、set、show、show、showter“,”大小“,”按新行拆分“,”子行“,”语法“,”文本点“,”文本到布局“,”展开“,”视口范围“,”视口位置“,”可见区域“,”窗口“,”单词“]

根据,升华文本按以下方式规范化命令名称:

  • 去掉“命令”后缀
  • 用下划线分隔大小写的短语
  • 因此,应按以下方式调用DeleteCurrentFileCommand:
    查看。运行命令(“删除当前文件”)

    通过这个命令,我能够在Python控制台中完全按照上面列出的方式运行插件


    但是,如果我尝试运行
    view.run\u命令(“DeleteCurrentFile”)
    ,则控制台将显示一个空行。这可能导致self.view.file\u name()返回无。控制台中是否有错误msgs?否。
    的检查(f为无)
    始终为true,因此它在到达
    send2trash()
    之前返回。未检查
    send2trash()
    调用失败。当我在控制台中执行
    view.file\u name()
    时,它返回正确的路径。print dir(self.view)的输出是什么?将输出添加到问题中。我刚刚测试了它,它工作了!你如何调用该命令?哦,天哪,我现在觉得很愚蠢。我试图在窗口对象上运行该命令,就像这样
    window。run\u command('delete\u current\u file')
    这显然是错误的。当我调用
    view.run\u command()
    时,它工作正常。谢谢!