Sublime text:如何获取当前视图的文件名

时间:2012-11-13 13:03:50

标签: python plugins sublimetext2 filenames delete-file

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

我是Python的新手,我不知道为什么它不能像这样工作。根据{{​​3}} file_name()返回当前视图的文件名。

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')

dir的输出(self.view):

  

[' class ',' delattr ',' dict ',' doc ','< strong>格式',' getattribute ','哈希',' init ',' len ','模块','','减少',' reduce_ex ',' repr ',' setattr ',' sizeof ',' str ','子类别 ',' weakref ','add_regions','begin_edit','buffer_id','classify','command_history','em_width','encoding','end_edit','erase',' erase_regions','erase_status','extract_completions','extract_scope','file_name','find','find_all','find_all_results','find_by_selector','fold','folded_regions','full_line','get_regions' ,'get_status','get_symbols','has_non_empty_selection_region','id','indentation_level','indented_region','insert','is_dirty','is_folded','is_loading','is_read_o nly','is_scratch','layout_extent','layout_to_text','line','line_endings','line_height','lines','match_selector','meta_info','name','replace','retarget' ,'rowcol','run_command','scope_name','score_selector','sel','set_encoding','set_line_endings','set_name','set_read_only','set_scratch','set_status','set_syntax_file',' set_viewport_position','settings','show','show_at_center','size','split_by_newlines','substr','syntax_name','text_point','text_to_layout','展开','viewport_extent','viewport_position' ,'visible_region','window','word']

1 个答案:

答案 0 :(得分:6)

根据Plugins page of the unofficial documentation,Sublime Text以下列方式规范化命令名称:

  1. 剥离&#34;命令&#34;后缀
  2. 用下划线分隔骆驼套装短语
  3. 因此,应以下列方式调用DeleteCurrentFileCommand:    view.run_command("delete_current_file")

    使用此命令,我能够完全按照上面在Python控制台中列出的那样运行您的插件。

    但是,如果我尝试运行view.run_command("DeleteCurrentFile"),则控制台会显示一个空行。这可能导致self.view.file_name()返回None。