Ranger文件管理器能否合并单文件嵌套目录路径?
实现Ranger单内容嵌套目录的路径合并(类似Emacs dired-collapse)
Ranger本身没有原生支持该功能,但可以通过自定义Python插件实现。以下是具体步骤:
1. 创建自定义插件脚本
在Ranger的插件目录~/.config/ranger/plugins/下新建collapse_single_dirs.py文件,写入以下代码:
import os from ranger.core.linemode import LinemodeBase class CollapseSingleDirsLinemode(LinemodeBase): name = "collapse" uses_metadata = False def filetitle(self, file, metadata): if not file.is_directory: return file.relative_path # 递归生成合并后的路径 def get_collapsed(current_path): entries = os.listdir(current_path) if len(entries) != 1: return os.path.basename(current_path) next_path = os.path.join(current_path, entries[0]) if os.path.isfile(next_path): return f"{os.path.basename(current_path)}/{os.path.basename(next_path)}" else: return f"{os.path.basename(current_path)}/{get_collapsed(next_path)}" return get_collapsed(file.path)
2. 配置Ranger启用该显示模式
打开~/.config/ranger/rc.conf,添加以下配置:
# 全局启用合并显示模式 set linemode collapse # 若只想在特定面板启用(比如第二面板),替换成下面一行 # set linemode_2 collapse
3. 测试效果
重启Ranger后进入main_dir:
- 针对
sub_dir1,面板会直接展示合并后的完整路径(如sub_dir1/single_dir/single_file) - 针对
sub_dir2,因包含多个条目,会正常显示原层级结构
如果需要临时切换回默认显示,按zh(Ranger默认的显示模式切换快捷键)即可切回default模式。
补充说明
- 脚本的递归逻辑会自动终止在第一个包含多个条目的目录或最终文件
- 若要调整合并规则(比如限制最大合并层级),可修改
get_collapsed函数的判断条件 - 此方案仅修改路径显示,不改变实际文件系统结构,不影响文件的正常操作
内容的提问来源于stack exchange,提问作者hwhap
相关产品推荐
相关产品推荐

