Midnight Commander
Midnight Commander 是一个用于 类 Unix 系统的可视化 shell。它是一个 正统(双面板)文件管理器,支持标准文件操作、虚拟文件系统、外部命令面板化和用户菜单。它还包括一个内置查看器 mcview(1)、编辑器 mcedit(1) 和可视化差异工具 mcdiff(1)。
由于它基于通用的文本界面 — ncurses 或 S-Lang — 它可以在常规控制台、X Window 终端内、通过 安全 Shell (SSH) 连接以及各种远程 shell 上工作。
文档仍在草稿状态。
安装
安装 mc 软件包,或 mc-gitAUR 以获取开发版本。
皮肤
Midnight Commander 默认带有多种皮肤。您可以在选项 > 外观中设置皮肤。
其他第三方皮肤可以单独安装
- mc-solarized-git — Midnight Commander 的 Solarized 配色方案。
- mc-skin-modarin-debian — modarin 主题的精简版本。
另见 mc(1) § 皮肤。
配置
大多数 Midnight Commander 设置可以从菜单中更改。但是,少数设置(例如剪贴板命令、代码集检测和外部编辑器的参数)只能从 ~/.config/mc/ini
中更改。有关选项的完整描述,请参见 mc(1) § 特殊设置 及后续章节。
此外,还支持以下环境变量:MC_SKIN
、MC_KEYMAP
、MC_XDG_OPEN
、MC_COLOR_TABLE
、MC_DATADIR
、MC_HOME
、KEYBOARD_KEY_TIMEOUT_US
、PAGER
、EDITOR
、VIEWER
。
另见 mc(1) § 文件。
extfs
extfs 允许轻松为 Midnight Commander 创建新的虚拟文件系统。有关详细信息,请参见 /usr/lib/mc/extfs.d/README
。
用法
界面
突出的视图是两个垂直面板。每个面板都可以列出目录内容、显示纯文本预览、文件详细信息或目录树(参见 mc(1) § 目录树)。文件操作可通过功能键或鼠标访问。更多选项在动态用户菜单 (F2
) 和选项菜单 (F9
) 中可见。F12
以上的按键 (F13
到 F20
) 可通过 Shift
访问。菜单和对话框选项都有一个字母突出显示 - 按下此字母(或在文本条目内按 Alt+字母
)可以直接激活相应的选项。
下面,可以看到连接到子 shell 的命令行。此 shell 通常与启动 Midnight Commander 的 shell 类型相同,并且可以随意切换到该 shell (Ctrl+o
),参见 mc(1) § 子 shell 支持。在此命令行中,cd 由 Midnight Commander 解释,而不是传递给 shell 执行。因此,特殊的补全(例如来自 Zsh 的补全)不可用。面板中的文件与命令行交互;例如,Alt+Enter
将(选定的)文件名复制到命令行。
快捷键绑定通常类似于 GNU Emacs。可以启用更严格的 emacs 快捷键映射(参见 mc(1) § 重新定义快捷键绑定)。但是,新用户可以使用类似 Lynx 的(箭头)快捷键绑定(在选项 > 面板选项中启用)和鼠标点击进行导航。
Linux 虚拟控制台的鼠标支持可以使用 通用鼠标 启用。
模块
这些模块可以通过 Midnight Commander 界面调用(在选项 > 配置中启用使用内置),也可以单独作为指向 mc 二进制文件的符号链接调用。
- mcedit(1) — 文本和二进制文件编辑器,具有正则表达式替换、语法高亮、宏和 shell 管道
- mcview(1) — 文本和十六进制查看器,具有 goto 标记和正则表达式搜索
- mcdiff(1) — 原位比较和编辑两个文件 (
Ctrl+x
d
)
对于每个 Midnight Commander 实例,可以并发运行多个模块,您可以使用 Alt+`
在它们之间切换,参见 mc(1) § 屏幕选择器。可以改为使用外部编辑器,并相应地配置参数。
技巧与提示
Midnight Commander 可以通过正确的桌面条目从菜单运行。例如
[Desktop Entry] Type=Application Version=1.0 Name=Midnight Commander Comment=Visual file manager Exec=mc Icon=folder MimeType=inode/directory Terminal=true Categories=Utility;
回收站支持
默认情况下,Midnight Commander 不支持回收站。
使用 libtrash
安装 libtrashAUR 软件包,并在 shell 的初始化文件(例如,~/.bashrc
或 ~/.zshrc
)中创建 mc 别名
alias mc='LD_PRELOAD=/usr/lib/libtrash.so mc'
要应用更改,请重新打开 shell 会话或 source
shell 初始化文件。
默认设置在 /etc/libtrash.conf.sys
中定义;默认回收站目录为 ~/Trash/
。您可以在 ~/.libtrash
中覆盖这些每用户设置,例如
~/.libtrash
TRASH_CAN = .Trash INTERCEPT_RENAME = NO IGNORE_EXTENSIONS= o;exe;com UNCOVER_DIRS=/dev
现在,由 Midnight Commander 删除的文件将被移动到 ~/.Trash/
目录。
- 从 Midnight Commander 启动的应用程序会继承
LD_PRELOAD
,这可能会导致某些应用程序出现问题。[1] - 如果设置了
GLOBAL_PROTECTION = YES
(默认),则即使文件位于不同的分区上,在主目录外部删除的文件也会被移动到回收站。根据文件的大小,这可能会导致明显的延迟。
另请参阅 GNOME 邮件列表上的这个帖子。
mcedit 语法高亮
mcedit(1) § 语法高亮 部分缺少来自 man 1 cooledit
相应部分的一些重要信息。阅读 mcedit 和 cooledit 手册页,或应用补丁。
故障排除
退出到当前目录
退出时,shell 返回到启动 Midnight Commander 的目录,而不是最后一个活动目录。包含一个包装脚本,可以通过将此行添加到您的 ~/.bashrc
或 ~/.zshrc
来使用它
alias mc=". /usr/lib/mc/mc-wrapper.sh"
对于 fish shell,请使用此包装器:http://mc-wrapper.fish。将其放置到 ~/.config/fish/functions/mc.fish
或在 fish
shell 中执行内容,然后运行
funcsave mc
另一个简单的解决方法是使用子 shell (Ctrl+o
)。但是,这可能会干扰其他终端应用程序。
屏幕乱码
按 Ctrl+l
重新绘制显示。这仅重新绘制,但不刷新 (Ctrl+r
) 文件列表。
打开文件
Midnight Commander 读取 MC_XDG_OPEN
环境变量 以打开文件,如果未设置,则默认为 xdg-open 当 未设置时。
如果 Midnight Commander 在结果进程结束之前一直被阻塞,或者进程与 mc 一起退出,请使用 nohup &
~/bin/nohup-open
#!/bin/bash nohup xdg-open "$@" &
并相应地设置 MC_XDG_OPEN
$ export MC_XDG_OPEN=~/bin/nohup-open
unset LD_PRELOAD
。查找文件没有结果
如果查找文件对话框(可通过 Alt+?
、Esc+?
或 F9 (菜单) > 命令 > 查找文件 访问)未显示任何结果,请检查当前目录中是否存在符号链接。查找文件 不会跟随符号链接,因此请改用绑定挂载(参见 mount(8)),或使用外部面板化命令。
快捷方式失效
对于某些终端定义,例如 screen-256color
或 xterm-termite
,快捷键(如 Shift+F6
)可能无法工作或表现为不同的组合。为了解决这个问题,请使用学习键位对话框手动分配终端序列。
设置将存储在 ~/.config/mc/ini
文件中,例如对于 screen-256color
F13
–F20
绑定到 Shift+F3
–Shift+F10
。[terminal:screen-256color] f1=\\eOP f2=\\eOQ f3=\\eOR f4=\\eOS f5=\\e[15~ f6=\\e[17~ f7=\\e[18~ f8=\\e[19~ f9=\\e[20~ f10=\\e[21~ f11=\\e[23~ f12=\\e[24~ f13=\\e[1\;2R f14=\\e[1\;2S f15=\\e[15\;2~ f16=\\e[17\;2~ f17=\\e[18\;2~ f18=\\e[19\;2~ f19=\\e[20\;2~ f20=\\e[21\;2~ complete=\\e^i backtab=\\e[Z backspace=^?
Xterm 窗口标题自定义
Xterm 窗口标题 格式 硬编码 为 mc [username@hostname]:current/path
,另请参阅 相应的工单。
mc(1) § 屏幕选择器 (屏幕列表)文件管理器(面板:)条目格式也 硬编码 了。