跳转至

第 8 章:偏好设置与个性化定制

一款真正卓越的文件管理器应当主动适应您的工作节奏,而不是强迫您去削足适履。资深工程师、系统管理员、数字档案管理人员与设计创作者各自拥有截然不同的肌肉记忆、视觉需求与操作习惯:有人严格恪守传统 Norton Commander / Total Commander 的经典功能键(F1–F10),有人则深度依赖 macOS 原生快捷键(Cmd+C、Cmd+V、Cmd+O);有人要求表格列宽根据文件名排版指标实时智能自适应,有人则偏好边界分明、严格锁定的固定列宽;有人需要毫秒级的实时文件系统变动监听,有人则在跨洋高延迟网络共享盘上工作,必须强制启用温和的周期性轮询机制。

ATBCmder 从底层架构起便具备极高的可定制性。通过高度模块化的 综合偏好设置中心 (Cmd+, / ⌘, / cm_Options)、直观且自带实时冲突检测的 图形化快捷键编辑器、智能的 列宽自适应算法引擎、支持丰富动态宏参数的文件类型关联规则,以及支持一键打包迁移的 ZIP 便携配置包 (cm_ExportConfiguration),ATBCmder 允许您随心微调双面板环境的每一个细节,并在多台 Mac 之间自由无缝穿梭。


1. 快速入门:设置中心与命令矩阵

ATBCmder 将全套用户个性化配置统一收敛在由 16 个专项配置页、独立的快捷键映射层以及原子化 XML 持久化架构组成的设置中心:

┌────────────────────────────────────────────────────────────────────────────────────────┐
│                           ATBCMDER 综合偏好设置中心 (Cmd+,)                            │
├──────────────────────┬─────────────────────────────────────────────────────────────────┤
│  左侧分类导航菜单    │  右侧活动配置页内容展示                                         │
├──────────────────────┼─────────────────────────────────────────────────────────────────┤
│  • 常规 (General)    │  列宽自适应模式:                                                │
│  • 快捷键 (Hotkeys)  │  [ 统计平均模式 (智能边距填充)                        ▼ ]       │
│  • 语言 (Language)   │                                                                 │
│  • 文件视图 (Views)  │  平均模式扩展权重系数: [ 1.25x ]                                │
│  • 自动刷新 (Refresh)│                                                                 │
│  • 文件操作 (Ops)    │  文件排序规则:                                                  │
│  • 压缩打包 (Packer) │  [X] 自然数字排序: photo1.jpg < photo10.jpg                     │
│  • 插件扩展 (Plugins)│  [X] 严格区分英文字母大小写                                     │
│  • 常用目录书签      │  文件夹排列次序: [ 文件夹始终置顶                     ▼ ]       │
│  • 常用标签页组      │                                                                 │
│  • 内置编辑器        │  缩略图生成参数:                                                │
│  • 全能查看器        │  默认卡片边长: [ 128 像素 ]   缓存路径: [~/.cache/atbcmder]     │
│  • 顶部主工具栏      │                                                                 │
│  • 居中操作工具栏    │  日期时间呈现格式:                                              │
│  • 操作日志 (Log)    │  完整时间掩码: [ %Y-%m-%d %H:%M:%S                            ] │
│  • 列表快捷搜索      │                                                                 │
│  • 语义命令与过滤    │  [ 还原修改 ]                           [ 应用 ] [ 确定 ] [取消]│
├──────────────────────┴─────────────────────────────────────────────────────────────────┤
│  底层数据存储:   atbcmder.xml  |  atbcmder_hotkeys.xml  |  favtabs.xml  |  hotlist.xml │
│  跨机便携迁移:   cm_ExportConfiguration (ZIP)  ➔  cm_ImportConfiguration (ZIP)         │
└────────────────────────────────────────────────────────────────────────────────────────┘

偏好设置与个性化双矩阵速查表

操作名称 macOS 原生快捷键 传统 Commander 键 命令 ID 功能说明
打开偏好设置 Cmd+, / ⌘, Alt+O / ⌥O cm_Options 呼出包含 16 大分类的综合配置中心对话框。
配置快捷键映射 Cmd+, ➔ 快捷键 — cm_Options (快捷键) 直接定位至键盘热键分配与冲突检测面板。
配置文件扩展名关联 菜单:配置 — cm_FileAssoc 将文件后缀与内置/外部查看器及编辑器绑定。
常用目录书签管理 Ctrl+Shift+D / ⌃⇧D Ctrl+Shift+D cm_ConfigDirHotList 编辑、分类与排序已保存的文件夹快速书签(Ctrl+D 为呼出书签列表)。
常用标签页组配置 菜单:配置 — cm_ConfigFavoriteTabs 维护与整理双面板多标签页工作区方案。
配置外部压缩程序 菜单:配置 — cm_ConfigArchivers 配置调用外部 7-Zip、tar 等打包执行程序与参数。
导出全局便携配置 菜单:配置 — cm_ExportConfiguration 将所有 XML 设置一键打包为可迁移的 ZIP 归档。
导入全局配置包 菜单:配置 — cm_ImportConfiguration 从 ZIP 归档中还原全部个性化设置并即时生效。
打开本地配置目录 菜单:配置 — cm_OpenConfigDirectory 在激活面板中直接定位打开 ATBCmder 配置文件夹。
立即强制落盘保存 菜单:配置 — cm_ConfigSaveSettings 将内存中的各项改动立即强制写入磁盘 XML。
锁定保存当前窗口布局 菜单:配置 — cm_ConfigSavePos 固化当前窗口屏幕坐标、长宽尺寸与中线分割比例。
浮动元数据提示框开关 偏好设置:文件视图 — (设置项) 开启或关闭鼠标悬停在文件上时弹出的详细信息卡片。
系统沙盒权限向导 菜单:配置 — cm_GrantFilesystemAccess 启动 macOS App Sandbox 与完全磁盘访问引导。

2. 偏好设置中心结构与操作指南 (Cmd+, / cm_Options)

ATBCmder 的总控控制台就是 偏好设置对话框。您可以通过按下 Cmd+,(⌘,)、选择菜单栏 ATBCmder ➔ 偏好设置...,或在语义命令条(/)中执行 cm_Options 随时呼出。

2.1 对话框排布与交互模型

偏好设置对话框采用经典的主从分栏布局,完美兼顾鼠标交互与纯键盘操作:

  1. 左侧大类导航列表 (Sidebar):固定宽度 195 像素,字体清晰适中(14pt 界面字)。使用键盘方向键 ↑ 与 ↓ 即可快速轮转分类,或者直接鼠标点击。
  2. 右侧滚动内容页 (Page Scroll Area):无边框平滑滚动容器 (QScrollArea)。当在左侧切换分类时,右侧对应的内容页平滑就位,绝无窗口尺寸跳动或屏幕闪烁。
  3. 底部操作控制条:
  4. 确定 (OK):全面校验所有分类页的输入合法性,将改动原子化写入磁盘 (atbcmder.xml),触发多语言翻译与主题刷新,并关闭对话框。
  5. 应用 (Apply):无需关闭弹窗即可将改动即时生效。这在实时预览不同界面字体、主题深浅色微调、测试列宽填充系数或自动刷新灵敏度时格外好用。
  6. 取消 (Cancel):丢弃本轮所有未应用的修改;若刚才临时预览过主题,系统会自动回滚至进入设置前的原始外观。
┌────────────────────────────────────────────────────────────────────────────┐
│ 偏好设置 16 大分类总览                                                     │
├────────────────────────────────────────────────────────────────────────────┤
│  [ 常规 (General) ]       基础界面交互、确认弹窗策略、深浅外观主题         │
│  [ 快捷键 (Hotkeys) ]     全功能键位映射、主次按键槽、实时按键冲突检测     │
│  [ 语言 (Language) ]      30+ 种语言动态切换,即选即用免重启               │
│  [ 文件视图 (File Views) ]自然排序、智能列宽算法、日期格式、图标大小       │
│  [ 自动刷新 (Auto Refresh)内核事件驱动、轮询间隔微调、后台休眠、排除目录   │
│  [ 文件操作 (Operations) ]重名覆盖冲突策略、属性保留、删除行为             │
│  [ 压缩打包 (Packer) ]    ZIP、7Z、TAR 算法偏好、分卷大小预设              │
│  [ 常用目录 (Hotlist) ]   书签分组分类、目标面板选择、拖拽排布             │
│  [ 常用标签页 (Fav Tabs) ]双面板标签页工作区方案、路径与锁定状态维护       │
│  [ 内置编辑器 (Editor) ]  代码文本字体排版、缩进规则、外置外部编辑器挂接   │
│  [ 全能查看器 (Viewer) ]  预览引擎参数、大图解码质量、外部查看器联动       │
│  [ 顶部工具栏 (Toolbar) ] 按钮显隐、图标尺寸调节、自定义宏命令添加         │
│  [ 居中工具栏 (Middle) ]  中间分割条快捷操作按钮控制、扁平与立体样式切换   │
│  [ 操作日志 (Log) ]       文件操作审计流水、日志滚动切割大小               │
│  [ 列表快搜 (Quick Search)单字母直接搜索、尾部句点逻辑、大小写规则         │
│  [ 语义过滤 (Semantic) ]  自然语言指令别名、Spotlight 原生集成             │
│  [ 标签栏 (Tabs) ]        标签页胶囊圆角、关闭叉号显隐、路径锁定行为       │
└────────────────────────────────────────────────────────────────────────────┘

2.2 16 大配置页面功能全览

偏好设置中的每一个页面都专注解决特定功能领域的配置需求:

配置页面 实现模块 核心功能设置项
常规 (General) page_general.py 隐藏文件显隐、文件图标、删除/覆盖确认弹窗、系统废纸篓集成、复制/移动缓冲区大小 (4 KB–10 MB)、主题外观切换、全局字体大小、最小化到菜单栏托盘,以及全局显示/隐藏窗口快捷键 (Cmd+Opt+H)。
快捷键 (Hotkeys) page_hotkeys.py 多作用域命令搜索、主快捷键与次快捷键双槽绑定、按键冲突自动化预警,以及一键恢复出厂官方预设。
语言 (Language) page_language.py 动态多语言选择器,支持 30+ 种主流语言(英语、德语、法语、简体中文、繁体中文、日语、俄语、西班牙语等),实时生效无需重启。
文件视图 (File Views) page_fileview.py 大小写敏感与自然数字排序、文件夹排序位置(置顶、置底、混排)、新建/更新文件插入位置、三大列宽自适应模式(固定、平均、最大)、边距扩展系数滑块,以及自定义日期时间格式。
自动刷新 (Auto Refresh) page_auto_refresh.py 文件创建/删除/重命名监控、属性变动监控、定时器轮询回退间隔、应用进入后台时自动休眠,以及目录排除黑名单。
文件操作 (Operations) page_operations.py 默认单文件冲突策略(询问、覆盖、跳过、仅覆盖较旧、自动重命名目标)、目录冲突策略(询问、合并、覆盖、跳过)、可用空间预分配、符号链接处理方式、权限与时间戳保留,以及校验开关。
压缩打包 (Packer) page_packer.py 默认打包归档格式 (zip、7z、tar.gz、tar.bz2、tar.xz、tar),以及外部 7-Zip、GNU Tar、Gzip、Bzip2、XZ 工具的可执行文件路径。
常用目录 (Directory Hotlist) page_hotlist.py 交互式文件夹书签管理:新增、删除与拖拽重排 (Drag & Drop)、指定对侧双面板目标路径,以及分配快速直达数字键。
常用标签页 (Favorite Tabs) page_favorite_tabs.py 工作区快照管理:保存、重命名、排序与一键恢复双面板多标签页的工作目录状态。
内置编辑器 (Editor) page_editor.py 内置代码编辑器字体名称、字号、制表符宽度 (Tab Stop)、自动换行与行号开关;外部专业编辑器的可执行文件路径与命令行参数。
全能查看器 (Viewer) page_viewer.py Universal Lister 文本字体排版、制表符宽度、页边距、自动折行、光标显隐、图片解码渲染设置(EXIF 自动旋转、缩放插值、透明度棋盘格背景),以及外部独立查看器命令行挂接。
顶部工具栏 (Toolbar) page_toolbar.py 顶部主工具栏定制:图标尺寸滑块 (16–64 像素)、栏体宽度滑块、扁平按钮风格、文字标题显隐、多层级命令树,以及内置图标选择对话框。
居中工具栏 (Middle Toolbar) page_toolbar.py 双面板中间垂直分割条工具栏:图标大小、常用操作按钮增删与上下排序。
操作日志 (Log) page_log.py 文件操作审计流水记录:日志存储路径、宏变量路径替换、单文件体积上限与滚动轮转策略、特定操作事件过滤(复制、移动、删除、解压)。
列表快搜 (Quick Search) page_quicksearch.py 键盘快速检索模式(精确匹配、前缀、后缀、通配符)、大小写敏感度,以及无操作自动超时关闭时间。
语义过滤 (Semantic Filter) page_semantic_filter.py 内嵌自然语言命令条 (/) 运行逻辑、检索驱动后端,以及按键联想防抖延迟。
标签栏 (Tabs) page_tabs.py 文件夹标签页外观样式:关闭按钮显隐、多行平铺与单行滚动切换、锁定标签页时的跳转行为,以及关闭前二次确认。

2.3 实时外观主题与免重启多语言切换

不同于老旧软件修改界面外观后必须重启的落后体验,ATBCmder 实现了 热插拔主题渲染与动态国际化:

  1. 外观主题实时预览:打开 常规 分类页,在 经典 (Classic)、浅色 (Light)、深色 (Dark) 与 macOS 原生精致风格 (Stylish) 之间任意切换,主界面窗口会即刻通过 Qt 样式表引擎重新着色渲染。若点击 取消,界面会瞬间无损还原回修改前的原始配色。
  2. 多语言即选即用:进入 语言 分类页,在支持的 30 余种语言列表中选取您的目标语种,点击 应用。窗口标题、侧边栏导航、顶部菜单、底部按钮、状态栏以及所有交互弹窗,均会通过 ATBCmder 动态 tr() 国际化管道毫秒级重绘,无需重启即可享受原生中文体验。

语言偏好设置
图 7.1:多语言设置页面,支持涵盖简繁中文、英语、日语在内的 30+ 种国际化语言无缝热切换。


3. 键盘快捷键自定义与按键冲突管理

快捷键是双面板文件管理器的灵魂所在。ATBCmder 的 图形化快捷键编辑器 (page_hotkeys.py) 赋予您重定义每一项操作按键的完全自由,同时具备严密的作用域隔离与防冲突安全网。

┌────────────────────────────────────────────────────────────────────────────────────────┐
│                              快捷键个性化配置面板                                      │
├────────────────────────────────────────────────────────────────────────────────────────┤
│  快捷键作用域: [ FilePanel (文件列表)                                         ▼ ]      │
│  过滤命令列表: [ copy                                                        ] ⌧       │
├──────────────────────┬────────────────────────┬───────────────────┬────────────────────┤
│ 命令标识 (Command ID)│ 功能描述               │ 主快捷键 (Primary)│ 次快捷键 (Secondary│
├──────────────────────┼────────────────────────┼───────────────────┼────────────────────┤
│ cm_Copy              │ 复制选中的文件或文件夹 │ F5                │ Cmd+C              │
│ cm_CopySamePanel     │ 在同面板快速副本文件   │ Shift+F5          │ Cmd+D              │
│ cm_CopyRightPanel    │ 复制到右侧面板         │ Alt+F5            │                    │
│ cm_CopyFullNamesToClip│ 复制完整绝对路径      │ Ctrl+Shift+C      │ Cmd+Opt+C          │
├──────────────────────┴────────────────────────┴───────────────────┴────────────────────┤
│  [ 编辑快捷键... ]              [ 清除当前键位 ]              [ 恢复出厂默认键位 ]     │
└────────────────────────────────────────────────────────────────────────────────────────┘

3.1 作用域隔离机制 (Context Scoping)

为了避免快捷键在不同工作场景下相互争抢,ATBCmder 将按键监听划分为独立的 上下文作用域 (Context Scopes)。在一个作用域中绑定的按键不会污染其他无关窗口:

  • Main (全局通用):跨越所有子窗口始终有效的基础全局快捷键(如 Cmd+, 打开设置、Cmd+Q 退出程序)。
  • FilePanel (双文件面板):仅当键盘焦点位于左侧或右侧文件列表内时响应(如 F5 复制、Space 计算目录体积、Backspace 返回上一层)。
  • Viewer (全能查看器):在 Universal Lister 独立预览窗口 (F3) 中生效:控制文本编码、16 进制模式切换 (2 / Hex Mode)、图片旋转缩放与媒体播放。
  • Editor (代码编辑器):在内置文本编辑器 (F4) 中生效:控制语法高亮、缩进排版、代码查找替换 (Cmd+F) 与即时保存 (Cmd+S)。
  • Differ (文件内容对比):在左右双栏比对窗口中响应:差异块跳转 (F7/F8)、行级同步对齐与合并。
  • FindFiles (高级搜索):在多条件查找对话框中响应:启动搜索、列表导航与投递到列表面板 (Feed to Listbox)。
  • MultiRename (批量重命名):在批量改名工具中生效:计数器调整、插入变量标签与执行改名。

3.2 双按键槽位架构 (主快捷键与次快捷键)

ATBCmder 支持为每一项核心指令分配 两组独立的快捷键组合:

  • 主快捷键 (Primary Shortcut):契合您的主力肌肉记忆(例如经典 Commander 用户偏好的 F5)。
  • 次快捷键 (Secondary Shortcut):现代备选快捷键(例如 macOS 原生操作习惯的 Cmd+C)。

两个按键组合在对应作用域内完全等效、并行触发。当您浏览系统菜单栏时,ATBCmder 会自动优先展示主快捷键作为直观参考。


3.3 实操演练:自定义一条命令的快捷键

按照以下简明步骤,为命令重新指派或绑定次快捷键:

  1. 按下 Cmd+,(⌘,)打开偏好设置,并在左侧导航中点击 快捷键。
  2. 在顶部的 快捷键作用域 下拉框中选取对应环境(例如 FilePanel)。
  3. 在 过滤命令列表 输入框中键入关键词(例如 Terminal 或 Wipe),表格会即时收敛过滤出对应条目。
  4. 双击目标行,或选中该行并点击底部的 编辑快捷键...。
  5. 在弹出的 编辑快捷键 对话框中:
  6. 点击 主快捷键 输入框,直接在键盘上敲下期望的物理按键组合(例如按下 Ctrl+Alt+T)。输入组件会自动捕获并绘制原生按键标签。
  7. (可选)点击 次快捷键 输入框,敲下第二组组合键(例如 Cmd+Shift+T)。
  8. 点击 保存。
┌────────────────────────────────────────────────────┐
│ 编辑快捷键对话框                                   │
├────────────────────────────────────────────────────┤
│ 命令标识:            cm_RunTerm - 启动终端         │
│ 主快捷键:            [ Ctrl+J                    ] │
│ 次快捷键:            [ Cmd+Opt+T                 ] │
│                                                    │
│                           [ 取消 ]      [ 保存 ]   │
└────────────────────────────────────────────────────┘

3.4 自动化按键冲突检测与覆盖提示

如果您尝试分配的按键组合在当前作用域内已被其他指令抢占,ATBCmder 的冲突检测引擎会立即拦截并弹出明确的确认弹窗:

Warning

快捷键已被占用冲突警告
快捷键 Ctrl+M 已在 FilePanel 作用域中分配给 cm_MultiRename (批量重命名)。
是否确认强行覆盖,并将 Ctrl+M 重新分配给 cm_MarkCurrentExtension (选择同名扩展)?

  • 点击 是:系统会自动将旧指令上的快捷键解绑清空,并安全赋予新命令。
  • 点击 否:取消本次修改,保持原有的键位映射完好如初。

3.5 全局显示/隐藏窗口快捷键 (Cmd+Opt+H / Ctrl+Alt+H)

对于习惯将 ATBCmder 常驻后台的键盘极客:

  1. 打开 偏好设置 ➔ 常规。
  2. 勾选 最小化到系统菜单栏托盘。
  3. 定位到 全局显示/隐藏窗口快捷键(出厂默认:Ctrl+Alt+H / ⌘⌥H)。
  4. 点击录制框,直接按下您习惯的全局按键序列。
  5. 点击 应用。

此后无论您在 macOS 的哪个桌面、或是全屏运行着什么软件,只需敲下这组全局热键,ATBCmder 都能瞬间呼出至屏幕最前台;再次敲击则自动平滑隐入后台。


4. 文件列表视图、列宽算法与缩略图管理

文件视图 页面 (page_fileview.py) 负责精确调度双面板的渲染方式、排版比例、排序逻辑与视觉呈现。

┌────────────────────────────────────────────────────────────────────────────────────────┐
│                              文件视图与排版详细配置                                    │
├────────────────────────────────────────────────────────────────────────────────────────┤
│  排序规则微调:                                                                         │
│  [X] 区分大小写排序                     [X] 自然数字顺序排序                           │
│  [ ] 启用特殊排序规则                                                                  │
│  文件夹排序位置:          [ 文件夹始终置顶                                   ▼ ]       │
│  新创建文件插入位置:      [ 按规则自动排序                                   ▼ ]       │
│  最新更新文件插入位置:    [ 列表最顶端                                       ▼ ]       │
├────────────────────────────────────────────────────────────────────────────────────────┤
│  列宽计算与智能自适应引擎:                                                             │
│  列宽自适应计算模式:      [ 统计平均模式 (Average)                           ▼ ]       │
│  平均模式扩展权重系数:    [ 1.20x ]  (可调范围: 1.00x - 5.00x)                         │
│  提示: 在固定列宽模式下,手动拖动表头分隔线将分别记住左右面板的独立像素宽度。          │
├────────────────────────────────────────────────────────────────────────────────────────┤
│  日期时间格式化掩码:                                                                   │
│  完整日期时间格式:        [ %Y-%m-%d %H:%M:%S                                ]         │
│  目录同步时间格式:        [ %Y.%m.%d %H:%M:%S                                ]         │
└────────────────────────────────────────────────────────────────────────────────────────┘

4.1 智能列宽自适应引擎:三大运算模式

传统双面板工具常面临两难境地:固定列宽下长文件名被截断成省略号 (...),而按最长名字拉伸又会把“大小”、“修改时间”等字段硬挤出屏幕。ATBCmder 提供了三种各展所长的列宽机制:

  1. 固定模式 (fixed):
  2. 彻底关闭自动重新计算。
  3. 列宽完全服从您的手动拖拽布局。
  4. 分侧记忆:当您用鼠标拖动表头边框(如调节 名称 与 扩展名 之间的宽度)时,ATBCmder 会捕捉精确像素值,并分别落盘记录左右两扇面板的独立状态(对应 atbcmder.xml 中的 column_widths_left 与 column_widths_right)。
  5. 统计平均模式 (average — 官方推荐):
  6. 算法自动度量当前目录下所有可见文件名的平均字符排版像素宽度 (QFontMetrics)。
  7. 将平均值乘以您配置的 扩展系数(滑块范围 1.0x 至 5.0x,推荐设为 1.0x–1.25x),并额外预留 40 像素的图标边距与呼吸空间。
  8. 核心优势:绝大多数常规文件名均能舒展完整阅读,且哪怕目录里出现极个别长达 150 个字符的异常日志文件名,也不会把其他列挤压出屏幕。
  9. 最大文本宽度模式 (max):
  10. 快速遍历扫描当前目录,以最长的一项文件名为基准向右扩展列宽,并追加 50 像素的安全边距。
  11. 确保目录下 100% 的文件名均完整展开绝不省略,特别适合媒体资源素材库与学术数据归档目录。

Tip

海量文件目录性能优化:
当一个文件夹内包含数万个条目时,如果逐行测量文本像素会导致界面假死。ATBCmder 内置了智能等距抽样算法 (_MAX_SAMPLE = 200),在超大目录中仅均匀抽取 200 个样本行评估字体指标,将计算开销牢牢压制在 2 毫秒以内,同时自动跳过父目录标记 (..)。


4.2 文件排序逻辑与细粒度选项

随心定制双面板中文件与文件夹的排列规律:

  • 自然数字顺序 (Natural sorting):开启后,字符串中的数字会按照数学大小排序:file1.txt、file2.txt、file10.txt(而非传统字典序强行排成 file1.txt、file10.txt、file2.txt)。
  • 区分大小写排序:勾选后,大写字母命名的文件优先排在小写之前;取消勾选则对大小写一视同仁。
  • 文件夹排序位置 (Folder sort mode):
  • 文件夹置顶 (Folders first):目录永远整齐排列在列表最上方。
  • 文件置顶 (Files first):文件排列在最上方,文件夹沉降至最底部。
  • 混排 (Mixed):文件与文件夹按字母顺序完全混同排列。
  • 新建与更新文件位置:控制当后台新增文件或修改旧文件时,目标条目在列表中的落点位置(自动排序、置于顶端 或 置于底部)。

4.3 缩略图网格视图与高性能缓存机制

对于摄影师、视觉设计师与影视剪辑师,ATBCmder 原生提供了 缩略图网格模式 (cm_ThumbnailsView),用高清晰度图片卡片取代传统表格文本。

缩略图网格视图
图 7.2:高性能缩略图视图,支持自由调节图片边长与平滑网格间距。

尺寸调节与动态缩放手势

  • 默认卡片边长:支持在 48 像素至 512 像素之间无级调节(默认 128 像素)。
  • 触控板双指捏合缩放:在 Apple 妙控触控板上,直接使用自然双指捏合手势,或按住 Ctrl 键滚动鼠标滚轮,即可在列表内实时动态缩放缩略图卡片。

多级双层缓存架构

为 4800 万像素的 RAW 原图或复杂的矢量 SVG 生成缩略图非常消耗 CPU。ATBCmder 构建了双层高性能缓存体系:

  1. 内存 LRU 高速缓存:在 RAM 中常驻 500 张解码好的 QPixmap 图像对象,确保在列表上下急速滚动时维持 60 帧满帧丝滑。
  2. 磁盘永久缓存:缓存在用户本地缓存目录中:
  3. 本地路径:~/.cache/atbcmder/thumbnails/
  4. 缓存键采用组合哈希机制生成,融合了文件绝对路径、修改时间戳 (mtime)、请求像素边长以及系统缓存版本号: $\(\text{Cache Key} = \text{SHA256}(\text{filepath} + \text{mtime} + \text{size} + \text{version})\)$
  5. 一旦文件在磁盘上被修改,时间戳发生变化,旧缓存立即失效并在后台自动重绘。
  6. 多线程并发解码池:图片生成完全由独立的后台 QThread 线程池负责,调用 Pillow (PIL) 或硬件加速的 QImage 管道,绝不阻塞主界面操作。

4.4 自定义日期时间格式化规范

ATBCmder 允许使用标准 Python strftime 语法自定义时间显示掩码:

  • 完整日期时间格式(默认:%Y-%m-%d %H:%M:%S):用于全列视图中的时间字段展示(如 2026-09-06 14:30:00)。
  • 目录同步时间格式(默认:%Y.%m.%d %H:%M:%S):用于目录同步比较窗口中的时间呈现。
占位标记 含义说明 示例输出
%Y 4 位数公元年份 2026
%m 2 位数月份 (01–12) 09
%d 2 位数日期 (01–31) 06
%H 24 小时制小时 (00–23) 14
%I 12 小时制小时 (01–12) 02
%p 上午 / 下午标识符 PM
%M 2 位数分钟 (00–59) 30
%S 2 位数秒数 (00–59) 15

5. 文件系统自动刷新与监听灵敏度

在团队协同开发、浏览器下载大文件或后台编译工程时,磁盘目录的内容时刻都在改变。自动刷新 页面 (page_auto_refresh.py) 完美平衡了界面实时性与笔记本功耗。

┌────────────────────────────────────────────────────────────────────────────────────────┐
│                              文件系统自动监控与刷新配置                                │
├────────────────────────────────────────────────────────────────────────────────────────┤
│  [X] 刷新文件列表:                                                                     │
│      [X] 当文件被创建、删除或重命名时触发                                              │
│      [X] 当文件大小、修改日期或属性改变时触发                                          │
│      轮询回退间隔周期 (秒): [ 5 ]                                                      │
├────────────────────────────────────────────────────────────────────────────────────────┤
│  暂停自动刷新:                                                                         │
│      [X] 当应用程序处于后台闲置时自动挂起                                              │
│      [X] 对以下路径及其所有子目录忽略事件:                                             │
│          ┌──────────────────────────────────────────────────────────────────────────┐  │
│          │ /Volumes/NetworkShare/LargeMediaArchive                                  │  │
│          │ /Users/username/Developer/linux-kernel/                                  │  │
│          │ /Users/username/work/heavy_project/node_modules/                         │  │
│          └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────────────┘

5.1 内核事件触发与主动轮询回退

ATBCmder 融合了操作系统原生事件驱动机制与主动轮询机制:

  • 内核事件监听 (watch_file_name_change):挂钩 macOS 原生内核事件流 (FSEvents / kqueue),零 CPU 消耗实现纳秒级文件新增、删除与重命名捕获。
  • 属性变动监听 (watch_attributes_change):追踪文件体积扩展、权限标志微调与时间戳更新。
  • 主动轮询回退周期 (attr_poll_interval):支持配置 1 至 60 秒的轮询间隔(默认 5 秒)。
    为什么必须有轮询? 局域网网络共享盘(SMB、CIFS、NFS、SFTP VFS)在外部客户端修改文件时,往往无法向本地操作系统推送原生系统通知。主动轮询机制确保了网络挂载目录永远不会出现数据陈旧。

5.2 极致节能与 CPU 保护:后台自动挂起

在 MacBook 电池供电模式下,无休止的文件监听会带来不必要的电量损耗。

  • 勾选 当应用程序处于后台闲置时自动挂起 (watch_only_foreground),只要 ATBCmder 的主窗口失去焦点,所有文件监控线程与轮询定时器立即就地休眠挂起。
  • 当您通过触控板切回 ATBCmder 时,面板会在唤醒的瞬间统一执行一次平滑刷新,瞬间追平最新文件状态。

5.3 路径黑名单排除过滤器

某些极高频变动的构建产物目录——例如前端项目的 node_modules、Git 内部对象库 (.git)、编译中间产物缓存 (target/、build/) 以及大型数据库活跃文件——每分钟会爆发出成千上万个细碎磁盘事件。

  1. 勾选 对以下路径及其所有子目录忽略事件 (watch_exclude_dirs)。
  2. 在排除框中每行填入一个绝对路径:

    /Users/username/Developer/project/node_modules
    /Users/username/Developer/linux/.git
    /Volumes/ProductionNAS/RenderingQueue
    

  3. 点击 应用。ATBCmder 会彻底屏蔽这些黑名单路径下的所有杂碎事件,彻底杜绝无意义的界面闪烁与 CPU 突刺。


6. 自定义文件关联与外部工具链集成

双击文件或按下 Enter 通常会调用系统默认程序。ATBCmder 的 文件关联系统 (cm_FileAssoc / file_associations.py) 允许您针对特定扩展名自由绑定专属处理流水线,无论是内置引擎还是外部命令行/GUI 工具。

6.1 关联规则架构与通配符优先级

文件关联规则在匹配时遵循从最精确到最通用的优先级顺序:

\[\text{匹配优先级: } \texttt{*.min.js} \longrightarrow \texttt{*.js} \longrightarrow \texttt{text/*} \longrightarrow \texttt{*}\]

每个关联规则可配置多组动作(例如“在 VS Code 中编辑”、“16 进制查阅”、“使用 Python 执行”),其中可以指定某一项为回车触发的默认动作。


6.2 外部命令行调用参数替换宏变量

在配置外部启动程序或 Shell 脚本时,ATBCmder 支持通过参数宏动态注入当前文件信息:

宏变量 含义说明 替换后示例
%f 当前选中条目的完整绝对路径 /Users/username/Documents/report.pdf
%d 包含当前文件的父级目录路径 /Users/username/Documents
%n 不带扩展名的纯文件名主体 report
%e 不带前导点号的文件扩展名 pdf

6.3 经典文件关联实战配方

配方 1:在 VS Code 中打开 Python 脚本

  • 匹配规则:*.py
  • 动作名称:在 VS Code 中编辑
  • 执行命令:code %f
  • 动作类型:外部 Shell 命令行

配方 2:在系统终端中一键运行 Python 脚本

  • 匹配规则:*.py
  • 动作名称:直接运行脚本
  • 执行命令:python3 %f
  • 动作类型:外部 Shell 命令行

配方 3:使用 Typora 独立预览 Markdown 文档

  • 匹配规则:*.md
  • 动作名称:在 Typora 中预览
  • 执行命令:open -a Typora %f
  • 动作类型:外部 Shell 命令行

配方 4:调用 Beyond Compare 与对侧文件比对

  • 匹配规则:*
  • 动作名称:与对侧同名文件对比
  • 执行命令:bcomp %f %d
  • 动作类型:外部 Shell 命令行

7. 顶部工具栏与居中分割工具栏定制

ATBCmder 提供了两处支持深度定制的工具栏:位于主菜单正下方的 顶部主工具栏,以及嵌入在左右文件面板中央分割线上的 居中工具栏。

居中工具栏配置
图 7.3:居中分割条工具栏设置页面,可自定义微型快捷操作按钮与指令分发。

7.1 定制工具栏外观与按钮尺寸

打开 偏好设置 ➔ 顶部工具栏 或 偏好设置 ➔ 居中工具栏:

  • 栏体尺寸滑块 (Bar Size):在 16 像素至 64 像素之间调整工具栏高宽。
  • 图标尺寸滑块 (Icon Size):在 16 像素至 64 像素之间自由缩放按钮图标(默认 24 像素)。
  • 扁平化风格 (Flat Buttons):在现代无边框扁平按钮与经典立体浮雕按钮之间一键切换。
  • 显示文字标题 (Show Captions):在按钮图标旁侧或下方展开命令文字标签。

7.2 添加操作项与内置图标拾取器

工具栏支持通过多层级树状结构管理三类核心元素:

  1. 分隔线 (Separator):在功能按钮群组之间插入竖线分隔符或空白占位符。
  2. 内置命令 (Internal Command):借助支持自动补全的命令输入框,任意绑定 230 余条 cm_* 核心指令。
  3. 外部程序指令 (External Command):填写外部 Shell 命令、工作目录与动态参数宏(%f、%d)。

内置高清图标拾取器 (IconPickerDialog)

在配置自定义按钮时,点击图标预览按钮即可开启集成化的 图标拾取器:

  • 支持对软件内置的数百枚精选 SVG 与 PNG 图标进行即时关键词搜索。
  • 以均一的高清网格展示,提供实时放大预览并显示图标底层标识符。
┌────────────────────────────────────────────────────────────────────────┐
│ 内置图标拾取器 (ICON PICKER)                                           │
├────────────────────────────────────────────────────────────────────────┤
│ 搜索过滤: [ terminal                                                 ] │
├──────────────────────────────────────────────────────┬─────────────────┤
│  ┌────┐   ┌────┐   ┌────┐   ┌────┐   ┌────┐   ┌────┐ │ 选定大图预览:   │
│  │ 💻 │   │ 🖥️ │   │ ⌨️ │   │ ⚙️ │   │ 📁 │   │ 🔍 │ │                  │
│  └────┘   └────┘   └────┘   └────┘   └────┘   └────┘ │      💻         │
│  cm_RunTerm  console  terminal  bash   sh      zsh   │                 │
│  ┌────┐   ┌────┐   ┌────┐   ┌────┐   ┌────┐   ┌────┐ │ 标识: cm_RunTerm│
│  │ 📄 │   │ ✏️ │   │ ✂️ │   │ 📋 │   │ 🗑️ │   │ 🔒 │ │ 规格: 48x48     │
│  └────┘   └────┘   └────┘   └────┘   └────┘   └────┘ │ 格式: SVG/PNG   │
├──────────────────────────────────────────────────────┴─────────────────┤
│                                                [ 取消 ]    [ 选定 ]    │
└────────────────────────────────────────────────────────────────────────┘

7.3 常用目录书签与常用标签页组定制

  • 常用目录书签 (page_hotlist.py):管理您的 Ctrl+D 收藏夹。支持添加当前路径、拖拽排序、指定双面板对侧联动路径,并配置快速直达快捷键。
  • 常用标签页组 (page_favorite_tabs.py):将当前打开的多标签页工作区整体封存为场景模板,一键恢复整个开发项目或剪辑工程的目录排布。

常用目录管理
图 7.4:管理常用目录书签层级与快速访问路径。


8. 配置便携化管理与沙盒隔离测试模式

无论是购置新 Mac 迁移环境、为团队开发机批量下发统一设置,还是将精心调校的键位方案分享给好友,ATBCmder 都能让配置备份与还原变得极其简单。

8.1 配置文件存储结构与分工

ATBCmder 将所有用户个性化数据保存为结构规范、清晰易读的标准 XML 文本文件,位于操作系统的官方配置目录中:

  • macOS 标准独立版路径:
    ~/Library/Preferences/atbcmder/
  • macOS App Sandbox 沙盒版路径:
    ~/Library/Containers/com.aitobox.atbcmder/Data/Library/Preferences/atbcmder/
  • Linux / UNIX 标准路径:
    ~/.config/atbcmder/
  • 一键直达命令:
    运行 cm_OpenConfigDirectory(或从菜单栏选择 配置 ➔ 打开配置目录),当前激活面板会瞬间定位打开该文件夹。
~/Library/Preferences/atbcmder/
├── atbcmder.xml          # 核心全局偏好设置、窗口位置尺寸、主题外观、列宽自适应
├── atbcmder_hotkeys.xml  # 用户自定义快捷键映射与覆盖规则
├── favtabs.xml           # 已保存的双面板常用标签页工作区方案
├── hotlist.xml           # 常用目录书签 (Ctrl+D) 层级树
└── history.xml           # 历史浏览足迹、内嵌命令行历史、历史搜索记录

8.2 导出全局便携配置包 (cm_ExportConfiguration)

生成包含完整环境的一体化便携备份:

  1. 从菜单栏选择 配置 ➔ 导出配置...(或运行命令 cm_ExportConfiguration)。
  2. 选择目标保存文件夹并确认文件名(默认:atbcmder-config.zip)。
  3. 点击 保存。

ATBCmder 会在底层将内存中所有待落盘的改动全部刷新,收集全部配置文件(atbcmder.xml、atbcmder_hotkeys.xml、favtabs.xml、hotlist.xml 等),并打包生成高强度压缩的便携 ZIP 归档。


8.3 导入全局配置包与安全防线 (cm_ImportConfiguration)

在新电脑上一键还原配置,或回滚到已知的稳定快照:

  1. 从菜单栏选择 配置 ➔ 导入配置...(或运行命令 cm_ImportConfiguration)。
  2. 选取此前导出的 atbcmder-config.zip 备份包。
  3. 在弹出的安全警告弹窗中确认:

    导入配置将完全覆盖当前所有的偏好设置。是否确认继续?

  4. 点击 是。

ATBCmder 会解压并严密校验所提取的 XML 文件合法性,安全替换磁盘数据,并在不重启软件的情况下,热重载内部 Config() 单例,毫秒级刷新两扇文件面板与全局列宽布局。

Important

企业级安全防线:路径穿越攻击防护 (Anti-Traversal Protection)
ATBCmder 在导入配置包时会对解压条目实施严苛的安全白名单校验(zipfile 净化拦截)。任何包含非法路径分隔符(/、\)、目录穿越符(..)或非 XML 扩展名的恶意篡改条目都会被即刻拒绝解包,绝对保障操作系统的底层安全。


8.4 沙盒隔离测试模式 (ATBCmder_test.sh)

当您开发自定义扩展插件、测试大改动键位映射,或评估测试版功能时,应当保护好日常使用的生产配置文件。

ATBCmder 原生支持通过环境变量 ATBCMDER_CONFIG_PATH 将配置目录完整重定向。仓库内自带了隔离测试脚本:

# 以完全物理隔离的沙盒测试模式启动 ATBCmder:
./scripts/ATBCmder_test.sh

隔离测试模式底层运行机理:

  1. 自动在本地创建独立的干净临时目录:tests/.test_config/。
  2. 将出厂基线配置文件从 src/atbcmder/resources/test_config.xml 复制到临时路径 tests/.test_config/atbcmder.xml。
  3. 注入环境变量 export ATBCMDER_CONFIG_PATH="$(pwd)/tests/.test_config"。
  4. 启动 ATBCmder。在该测试会话中做的任何设置更改或删除,仅作用于临时测试目录,您个人日常使用的 ~/Library/Preferences/atbcmder/ 保持 100% 纤尘不染。

9. ⚡ 高手进阶:深度定制实战技巧

进阶技巧 1:基于 Chezmoi / Ansible 实现 Dotfile 自动化同步

因为 ATBCmder 将全部运行状态序列化为标准的 UTF-8 XML 文本,您可以毫无阻碍地将其纳入个人 Git Dotfiles 仓库,并使用 Chezmoi 或 Ansible 实现多设备自动化同步:

# 使用 Chezmoi 管理 ATBCmder 配置文件示例:
chezmoi add ~/Library/Preferences/atbcmder/atbcmder.xml
chezmoi add ~/Library/Preferences/atbcmder/atbcmder_hotkeys.xml

进阶技巧 2:超大网络挂载盘的性能调优

当挂载拥有数百万文件的企业级大型 SMB/NFS 存储时,频繁的系统事件可能导致局域网通信拥塞:

  1. 打开 偏好设置 ➔ 自动刷新。
  2. 取消勾选 当大小、修改日期或属性改变时触发。
  3. 将 轮询回退间隔周期 调整为 15 或 30 秒。
  4. 把网络挂载根路径(如 /Volumes/EnterpriseShare)添加到 路径黑名单排除列表 中。
  5. 在需要确认最新文件时,使用手动刷新快捷键(Ctrl+R / ⌘R)。

进阶技巧 3:外部命令环境变量与 Homebrew 路径继承

在为工具栏按钮或文件关联配置自定义外部脚本时,ATBCmder 会完整继承当前用户的 Shell 环境变量(包括 PATH、HOME、USER 等)。您可以直接调用通过 Homebrew 安装在 /opt/homebrew/bin/ 目录下的各类命令行工具(如 ffmpeg、code、git),无需繁琐书写绝对全路径。

进阶技巧 4:浮动元数据提示框的定制与开闭

ATBCmder 内置了半透明磨砂质感的浮动元数据提示卡片,在鼠标悬停时能够呈现图片分辨率、EXIF 拍摄参数、音频码率与压缩包内文件数。您可以在 偏好设置 ➔ 文件视图 中根据个人审美偏好自由开启或关闭该提示。

丰富的悬停提示卡片
图 7.5:鼠标悬停于文件条目时浮现的丰富元数据提示卡片。


10. 系统权限与安全警示

Caution

覆盖全局核心按键操作的谨慎提醒
在 Main 或 FilePanel 作用域中覆盖主快捷键会立即剥夺原有命令的键位响应。如果不小心将 F5(复制)或 Enter(打开)等至关重要的基础操作误删,请使用快捷键编辑器底部的 恢复出厂默认键位 按钮立即重置。

Warning

导入配置将全面覆盖现有数据
通过 cm_ImportConfiguration 导入配置包会无条件覆盖当前磁盘上的 atbcmder.xml、favtabs.xml 与 hotlist.xml。在导入来自他人的外部配置包之前,请务必先将自己现有的配置导出一份副本作为安全备份。

Important

macOS App Sandbox 与完全磁盘访问权限
若 ATBCmder 在 macOS App Sandbox 沙盒模式下运行,未经用户明确授权前无法访问沙盒容器之外的本地卷与外接移动硬盘。若在浏览时频繁遭遇权限拒绝告警,请在菜单栏执行 cm_GrantFilesystemAccess 完成系统完全磁盘访问权限引导。


11. 偏好设置与个性化双矩阵速查全表

分类类别 操作功能说明 macOS 原生快捷键 传统 Commander 键 命令 ID
偏好设置 打开偏好设置主中心对话框 Cmd+, / ⌘, Alt+O / ⌥O cm_Options
偏好设置 立即将内存配置强制落盘 菜单:配置 — cm_ConfigSaveSettings
偏好设置 保存当前窗口几何尺寸与比例 菜单:配置 — cm_ConfigSavePos
偏好设置 切换悬停元数据提示卡片显隐 偏好设置 ➔ 文件视图 — (偏好设置项)
偏好设置 启动 macOS 完全磁盘访问向导 菜单:配置 — cm_GrantFilesystemAccess
快捷键 打开图形化快捷键编辑器 Cmd+, ➔ 快捷键 — cm_Options
快捷键 全局呼出/隐藏主窗口快捷键 Ctrl+Alt+H / ⌘⌥H Ctrl+Alt+H (全局系统热键)
文件关联 打开文件扩展名关联管理器 菜单:配置 — cm_FileAssoc
目录书签 打开常用目录书签管理器 Ctrl+Shift+D / ⌃⇧D Ctrl+Shift+D cm_ConfigDirHotList
目录书签 将当前激活路径添加到书签 菜单:书签 — cm_AddDirToHotlist
常用标签页 常用标签页工作区管理器 菜单:配置 — cm_ConfigFavoriteTabs
常用标签页 将当前标签页存为常用方案 菜单:标签 — cm_SaveFavoriteTabs
压缩程序 配置调用外部打包压缩程序 菜单:配置 — cm_ConfigArchivers
配置迁移 导出全部配置为便携 ZIP 菜单:配置 — cm_ExportConfiguration
配置迁移 从 ZIP 归档恢复导入配置 菜单:配置 — cm_ImportConfiguration
配置迁移 在面板中直达本地配置目录 菜单:配置 — cm_OpenConfigDirectory
视图模式 开启或关闭缩略图网格视图 Ctrl+Shift+F1 / ⌃⇧F1 Ctrl+Shift+F1 cm_ThumbnailsView
视图模式 手动刷新当前面板文件列表 Ctrl+R / ⌃R Ctrl+R cm_Refresh

准备好掌握全软件每一条快捷键与完整的双矩阵命令速查了吗?

前往第 9 章:双矩阵快捷键全景总览 →