sublime中的文件打开方式

sublime中的文件打开方式

sublime里面的默认文件打开方式不太好用,比如想打开一个 ~/.gitconfig文件编辑一下,在Windows下面还好,在Macos下面,除非把sublime_text的执行命令加入到path里面去,然后,从terminal里面去用命令行打开,否则就不是很方便,用finder默认是不显示 . 开头的文件的。

AdvancedNewFile

这个插件可以在下方的input_panel里面进行文件目录的导航,但是只能一个文件一个文件的往后切换,不能模糊搜索和过滤。应该增强模糊搜索和过滤的能力,以及拼音首字母的搜索和过滤的能力。通过 alt+super+n 调用来输入创建的文件路径。将默认路径设置为当前文件的文件夹。

优化点:

  1. 可以边输入,边检查和筛选
  2. 可以模糊筛选, 输入abc, 使用.*(a|A).*(b|B).*(c|C).*进行正则匹配
  3. 可以拼音首字母筛选,使用下面的pinyin_lib,将拼音对应的中文加入到正则表达式,输入abc, 使用.*(a|A|啊|阿...).*(b|B).*(c|C).*进行正则匹配
  4. 可以绑定快捷键在多个候选项中进行选择,格式为:真实的路径|候选文件名[其他候选项列表]
  • tab 或者 ctrl+j 选择第一个候选文件名
  • ctrl+n 可以切换下一个候选文件
  • ctrl+p 可以切换上一个候选文件
  • ctrl+l 可以切换到上一级的文件夹
  • enter 可以选择第一个候选文件名,但没有弹窗时,就是完成文件操作

第一版:

基本上和Emacs的Ido文件补全功能基本一致:

第二版:

没有达到helmvertico这种竖排显示的效果,尝试了show_quick_panelListInputHandler都是只能过滤一个固定列表,不能新增,也不能自定义过滤函数。但功夫不负有心人,通过popup实现了想要的效果,可以边输入,边过滤,结果也可以很好的呈现了,用popup后基本可以随心所欲了。

后续可以把show_input_panelshow_popup结合创建一个enhanced的input模式,可以抽象出两个钩子函数,一个是根据输入产生一个列表,一个是自定义过滤函数,对列表进行过滤:

    {"keys": ["ctrl+n"],"command": "advanced_new_file_next",
        "context": [{"key": "setting.anf_panel"}]
    },
    {"keys": ["ctrl+p"],"command": "advanced_new_file_prev",
        "context": [{"key": "setting.anf_panel"}]
    },  
    {"keys": ["ctrl+l"],"command": "advanced_new_file_updir",
        "context": [{"key": "setting.anf_panel"}]
    },
    {"keys": ["ctrl+j"],"command": "insert", "args": {"characters": "\t"},
        "context": [{"key": "setting.anf_panel"}]
    },

第三版:

可以使用enter进行列表的选择和确认,当不需要选择时,enter可以打开文件,这样就和show_quick_panel等的操作习惯是一致的了,另外,也增加了fuzzy sort,可以根据输入值和候选列表中的值的距离进行选择,这样排列的顺序更有意义一些:

    {"keys": ["ctrl+n"],"command": "advanced_new_file_next",
        "context": [{"key": "setting.anf_panel"}]
    },
    {"keys": ["ctrl+p"],"command": "advanced_new_file_prev",
        "context": [{"key": "setting.anf_panel"}]
    },  
    {"keys": ["ctrl+l"],"command": "advanced_new_file_updir",
        "context": [{"key": "setting.anf_panel"}]
    },
    {"keys": ["enter"],"command": "advanced_new_file_confirm",
        "context": [{"key": "setting.anf_panel"}]
    },    
    {"keys": ["ctrl+j"],"command": "insert", "args": {"characters": "\t"},
        "context": [{"key": "setting.anf_panel"}]
    },

之前是按照字母顺序来排列的,现在可以按照输入值和候选列表中的字符串的相似度进行排序,这样更reasonable。

新的github地址

各种优化改造后,给作者提了PR:
https://github.com/yangwen0228/Sublime-AdvancedNewFile

posted @ 2022-05-02 23:21  yangwen0228  阅读(385)  评论(0编辑  收藏  举报