Sublime Text 3函数按字母排序工具需求及通用方案问询
按函数名字母顺序重新排列代码中的函数块
我完全懂你的需求——简单按行排序肯定行不通,毕竟每个函数都是包含多行代码的完整块,必须把整个函数作为一个独立单元来排序。下面给你几种实用的解决方案,从通用脚本到编辑器工具都涵盖了:
1. Python 脚本(通用跨平台方案)
这个脚本会自动提取文件里的所有函数块,按函数名字母排序后重新写入文件,不管你的函数体是单行还是多行,也不管用的是//单行注释还是/* */多行注释,都能处理。
import re def sort_functions_by_name(file_path): # 读取目标文件内容 with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 正则匹配完整函数块:适配function 函数名() { ... }的格式,支持多行函数体 pattern = re.compile(r'(function\s+(\w+)\s*\([^)]*\)\s*{[^}]*})', re.DOTALL) # 提取所有函数,得到(完整函数文本,函数名)的列表 functions = pattern.findall(content) # 按函数名忽略大小写排序 sorted_functions = sorted(functions, key=lambda x: x[1].lower()) # 把排序后的函数拼接成新内容,用空行分隔保证可读性 new_content = '\n\n'.join([func[0] for func in sorted_functions]) # 写入文件(建议先备份原文件,或者改成写入新文件避免覆盖) with open(file_path, 'w', encoding='utf-8') as f: f.write(new_content) # 使用示例:替换成你的目标文件路径 sort_functions_by_name('your_functions.js')
注意:这个正则假设你的函数没有嵌套结构(比如函数内部定义另一个函数),如果有嵌套函数,推荐用专门的JS语法解析库如
esprima来处理,避免解析错误。
2. VS Code 插件方案(可视化快捷操作)
如果你日常用VS Code,直接用插件就能搞定:
- JavaScript Function Sorter:专门针对JS函数排序的插件,能自动识别完整的函数块,不需要手动选中,安装后右键菜单里就能找到"Sort Functions by Name"选项,傻瓜式操作。
- 要是找不到专门的插件,也可以用Sort Lines插件:先手动选中所有完整的函数块,再用插件的"Sort Lines (Case Insensitive)"功能,不过这种方式需要你确保选中的是完整函数,适合函数结构简单的场景。
3. 命令行工具(适合批量处理)
Linux/macOS用户可以用awk命令批量处理,把下面的代码保存为sort_funcs.awk:
BEGIN { RS = "function " FS = "{" } NR > 1 { func_name = $1 sub(/\s*\(.*\)\s*/, "", func_name) func_body = "{" $0 functions[func_name] = "function " func_body } END { PROCINFO["sorted_in"] = "@ind_str_asc" for (name in functions) { print functions[name] "\n" } }
然后运行命令完成排序:
awk -f sort_funcs.awk your_source_file.js > sorted_result.js
这个脚本同样假设函数没有嵌套,且都以
function开头、{}包裹。
不管用哪种方案,强烈建议先备份原文件,避免意外修改导致代码丢失。如果你的代码有复杂的嵌套函数或特殊语法,优先选择基于语法解析的工具,能最大程度保证排序的准确性。
内容的提问来源于stack exchange,提问作者Chris W.
相关产品推荐
相关产品推荐

