sublime中的文件打开方式
sublime中的文件打开方式
sublime里面的默认文件打开方式不太好用,比如想打开一个 ~/.gitconfig
文件编辑一下,在Windows下面还好,在Macos下面,除非把sublime_text的执行命令加入到path里面去,然后,从terminal里面去用命令行打开,否则就不是很方便,用finder默认是不显示 .
开头的文件的。
AdvancedNewFile
这个插件可以在下方的input_panel
里面进行文件目录的导航,但是只能一个文件一个文件的往后切换,不能模糊搜索和过滤。应该增强模糊搜索和过滤的能力,以及拼音首字母的搜索和过滤的能力。通过 alt+super+n 调用来输入创建的文件路径。将默认路径设置为当前文件的文件夹。
优化点:
- 可以边输入,边检查和筛选
- 可以模糊筛选, 输入
abc
, 使用.*(a|A).*(b|B).*(c|C).*
进行正则匹配 - 可以拼音首字母筛选,使用下面的
pinyin_lib
,将拼音对应的中文加入到正则表达式,输入abc
, 使用.*(a|A|啊|阿...).*(b|B).*(c|C).*
进行正则匹配 - 可以绑定快捷键在多个候选项中进行选择,格式为:真实的路径|候选文件名[其他候选项列表]
tab
或者ctrl+j
选择第一个候选文件名ctrl+n
可以切换下一个候选文件ctrl+p
可以切换上一个候选文件ctrl+l
可以切换到上一级的文件夹enter
可以选择第一个候选文件名,但没有弹窗时,就是完成文件操作
第一版:
基本上和Emacs的Ido文件补全功能基本一致:
第二版:
没有达到helm
和vertico
这种竖排显示的效果,尝试了show_quick_panel
和ListInputHandler
都是只能过滤一个固定列表,不能新增,也不能自定义过滤函数。但功夫不负有心人,通过popup实现了想要的效果,可以边输入,边过滤,结果也可以很好的呈现了,用popup后基本可以随心所欲了。
后续可以把show_input_panel
和show_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